2010-01-14 2 views
2

У меня есть ListBox, заполненный списком из ImageDomainService (RIA Services). Я хочу выбрать одно изображение из ListBox и показать большую версию изображения рядом с ним. Изображения сохраняются отдельно в/images/folder. Как получить привязку ImageName из ListBox к строке url в коде, как показано ниже?Получить SelectedItem из списка в коде за

void AlbumView_Loaded(object sender, RoutedEventArgs e) 
{ 
    ImageDomainContext ctx = new ImageDomainContext(); 
    listBoxImages.ItemsSource = ctx.Images; 
    ctx.Load(ctx.GetImagesListQuery()); 
} 

XAML:

<ListBox x:Name="listBoxImages" ItemsSource="{Binding}" 
    SelectionChanged="ListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock x:Name="ImageNameTextBox" Text="{Binding ImageName}" /> 
      <TextBlock Text="{Binding ImageDescription}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Event Handler:

private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Image _image = new Image(); 
    BitmapImage bi = new BitmapImage(); 

    // string url = ??????????? 
    bi.UriSource = new Uri(string.Format("images/{0}", url), UriKind.Relative); 

    _image.Source = bi; 

    _image.Width = 500; 
    _image.Height = 300; 

    bigImageBorder.Child = _image; 
} 

ответ

1

Почему бы просто не использовать SelectedItem свойство вместо ?:

// Put the class that you're binding to here... 
MyClass instance = listBoxImages.SelectedItem as MyClass; 
string url = instance.ImageName; // url is an odd variable name for this... 
bi.UriSource = new Uri(string.Format("images/{0}", url), UriKind.Relative); 

Кроме того, вы могли бы потенциально сделать IValueConve rter для выбранного элемента, который сделал это напрямую, чтобы вы могли привязать свой другой источник изображения к выбранному элементу без какого-либо кода.

+0

Спасибо! Я забыл связать его с классом Image, а не с классом ListBox Control (неправильный). Также я сделал ваш совет IValueConverter и связал это раньше, чтобы узнать, что случилось. Теперь у меня есть 2 рабочих пути ... – Niike2

Смежные вопросы