WPF ListBox数据绑定&活动

时间:2010-02-05 11:27:34

标签: c# wpf events listbox binding

我的问题很简单。
我有一个ListBox,包含Thumnails(图像)

<ListBox Name="ListBox_Thumbnails" ItemsSource="{Binding}" DataContext="{Binding Source= {StaticResource ThumbnailListSource}}" Width="120" HorizontalAlignment="Left" Margin="-1,26,0,54">
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel>
            <Image Source="{Binding Path=absolutePath}" MouseLeftButtonDown=<!--?????-->/>
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>

我想要显示一个图像,但作为一个新的StackOverFlow用户,我不能。你可以在这里找到图像:

http://www.freeimagehosting.net/uploads/61aa983cad.jpg

(对于那些不信任我的人,我在这里解释一下图片的内容: 在左侧,有一个缩略图列表(垂直显示),在右侧有一个更大的图像,默认对应第一个缩略图的大图像。

当我点击缩略图(左侧)时,右侧的大图片应该由我点击的那个更新。

由于我是WPF的新手,我的方法可能与ListBox完全错误。 请WPF Gurus给我看灯!

1 个答案:

答案 0 :(得分:4)

我想,你可以在ListBox上使用事件,像SelectionChanged一样......但这完全不是真正的WPF-Jedi方式 - 记住,代码隐藏是黑暗的一面! =)

想想数据绑定,那就是力量。将大型Image元素的源绑定到SelectedItem的{​​{1}}属性。它应该看起来像

ListBox

P.S。每个WPF-databinding-jedi都应附近this cheat sheet

P.P.S。实际上,当您使用ItemTemplate时,这可能不起作用,您将把StackPanel作为所选项目...在这种情况下,您可以尝试the SelectedValuePath trick,将其设置为“absolutePath”并将大图像绑定到<Image Source="{Binding SelectedItem.absolutePath, ElementName=ListBox_Thumbnails}"> 属性。

因此,您的ListBox开始标记变为:

SelectedValue

您的大图片标记变为:

<ListBox Name="ListBox_Thumbnails" ItemsSource="{Binding}" DataContext="{Binding Source= {StaticResource ThumbnailListSource}}" Width="120" HorizontalAlignment="Left" Margin="-1,26,0,54" SelectedValuePath="absolutePath">