[英]binding image control to listbox selected item
我有一個列表框,位於項目模板的內部,以及位於數據模板的內部(與往常一樣)。 我的目標是-在列表框選擇更改事件中,我想將列表框選擇的項目綁定到圖像控件-我的代碼是-
ListBox lb = (ListBox)sender;
ListBoxItem item = (ListBoxItem)lb.SelectedItem;
Image im = (Image)item.Content;
Image1.Source = new BitmapImage(((BitmapImage)im.Source).UriSource);
我的ListBox.ItemTemplate
看起來像這樣:
<ListBox Name="imageList" Height="556" Width="130" HorizontalAlignment="Left" Style="{StaticResource ListBoxStyle1}" SelectionChanged="imageList_SelectionChanged" >
<ListBox.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Imgs}" Width="100" Height="100"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
但它顯示出異常。 Image1
是我的圖像控件,我不想在xaml中綁定圖像源。 我有一些要求。
您之所以興奮,是因為當您綁定ListBox
,並且我假設您這樣做,或者與此相關的任何ItemsControl
時, Items
, SelectedItem
和SelectedItems
之類的屬性都將是綁定列表項的類型,而不是ListBoxItem
,它只是容器。 如果您需要ListBoxItem
像這樣引用它:
var listBox = sender as ListBox;
var lbi = (ListBoxItem)listBox
.ItemContainerGenerator
.ContainerFromItem(listBox.SelectedItem)
但是如果您的Image
是DataTemplate
一部分,它將不會如獲得Content
那樣容易。 同樣,它將是一種綁定項,基本上指向與SelectedItem
相同的項。 也許您可以使用它,否則您將需要引用VisualTreeHelper
,因為默認情況下, ListBoxItem
和您的DataTemplate
Image
之間的可視樹中將存在其他控件。 我不理解您不想綁定Image.Source
但是為什么不綁定回ListBox.SelectedItem
,然后可以引用您的對象。
如果要使用SelectedItem
圖像更新Image1.Source
,則SelectionChange
方法應如下所示:
Image1.Source = ((sender as ListBox).SelecteItem as img).Imgs;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.