Как заполнить прямоугольник изображением, которое приходит из связанного списка при пожаре событий в 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
}
Другие вопросы по тегам