将图像控件绑定到列表框所选项目

时间:2013-05-26 07:10:13

标签: c# silverlight windows-phone-7

我有一个列表框,在该项目模板内,并在该数据模板内(像往常一样)。我的目标 在列表框选择更改事件中,我想将列表框选定项目绑定到图像控件 - 我的代码是 -

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中绑定图像源。我有一些要求。

1 个答案:

答案 0 :(得分:0)

你有例外,因为当你绑定ListBox,我认为你做了,或者任何ItemsControl时,ItemsSelectedItem和{{1}等属性将是一种绑定列表项而不是SelectedItems,它只是一个容器。如果您需要ListBoxItem,请参考:

ListBoxItem

但如果var listBox = sender as ListBox; var lbi = (ListBoxItem)listBox .ItemContainerGenerator .ContainerFromItem(listBox.SelectedItem) 属于Image,则不会像获取DataTemplate一样容易。同样,它将是一种绑定项,基本上与Content相同。也许你可以使用它,否则你需要引用SelectedItem,因为默认情况下,VisualTreeHelperListBoxItem DataTemplate之间的可视树中会有其他控件。我感到不安,你不想绑定Image,但为什么不绑定Image.Source然后你可以引用你的对象。

如果您想使用ListBox.SelectedItem图片更新Image1.Source,那么您的SelectedItem方法应如下所示:

SelectionChange