Как заполнить прямоугольник изображением, которое приходит из связанного списка при пожаре событий в WP7
Я хочу создать приложение для создания поздравительных открыток для WP7, когда пользователь дважды нажимает на изображение из списка, я хочу, чтобы выбранное изображение заполняло прямоугольник на той же странице. Я передаю 50 изображений в список примерно так:
public GCM()
{
InitializeComponent();
var articles = new List<Article>();
for (byte i = 1; i <= 20; i++)
{
Article article = new Article() { Name = "name"+i, ImagePath = "Assets/Images/Backgrounds/"+i+".jpg" };
articles.Add(article);
}
listBox1.DataContext = articles;
}
и работает нормально, теперь вот фрагмент XML:
<Rectangle Fill="#FFF4F4F5" Margin="28,24,30,148" Stroke="Black" Name="rect1" />
................(more code here).........................
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin="10" >
<Image Name="bgs" Source="{Binding ImagePath}" Height="90" Width="90" DoubleTap="Load_BG" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
Как я могу заполнить прямоугольник с постукивающим изображением? этот код (ниже) устанавливает строку null каждый раз, независимо от того, какое изображение я выбираю, хотя, насколько мне известно, у каждого есть свое имя, и оно должно давать разные имена для разных изображений. Я буду использовать имя изображения, чтобы заполнить прямоугольник. Что я делаю неправильно?
private void Load_BG(object sender, System.Windows.Input.GestureEventArgs e)
{
string abc = sender.GetType().Name;
}
Пожалуйста, извините, если решение очевидно... это мое первое приложение в мире. Спасибо!
2 ответа
Так вот решение, оно работает сейчас:)
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var img = listBox1.SelectedItem as Article;
ImageBrush imgBrush = new ImageBrush();
imgBrush.ImageSource = new BitmapImage(new Uri(img.ImagePath, UriKind.RelativeOrAbsolute));
rect1.Fill = imgBrush;
}
sender
Параметр должен содержать элемент управления, который вызвал событие, в этом случае Image
контроль. Попробуй привести его к Image
введите, то вы можете получить необходимую информацию от Source
имущество:
private void Load_BG(object sender, System.Windows.Input.GestureEventArgs e)
{
Image img = (Image)sender;
//do something with img.Source here
}