WPF/C#单击图像缩略图->显示该图像大[关闭]

Posted

技术标签:

【中文标题】WPF/C#单击图像缩略图->显示该图像大[关闭]【英文标题】:WPF/C# Click on image thumbnail -> show that image big [closed] 【发布时间】:2017-09-11 21:15:38 【问题描述】:

我有来自相机的图像(但现在假设它们在磁盘上)。 我想要这些作为缩略图列表:

[thumb1] [thumb2] [thumb3] ... [thumb100]

单击缩略图时,我希望将该图像放在 UI 上的大图像视图(同一窗口)上。有点像this question。

我是一个 C# 菜鸟,不能按照这个答案来完成这个工作:(

另外,情节转折:我还想在我的相机上设置一个“实时模式”,这意味着“大图像”UI 元素也必须能够直接从相机实时显示图像(“实时”期间没有缩略图模式”)。

这是我目前得到的代码。我还需要补充什么?

XML:

<StackPanel>
    <!--This is the big image that I want to see when I click each thumbnail: -->
    <Image Source="Binding BigImage"/>

    <!--This is the thumbnail chain at the bottom: -->
    <ListBox ItemsSource="Binding Thumbnails"  Height="100">

        <ListBox.ItemTemplate>
            <DataTemplate>
                <Image Source="Binding BigImage"/>
            </DataTemplate>
        </ListBox.ItemTemplate>

        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

    </ListBox>

</StackPanel>

CS:

public partial class MainWindow : Window, INotifyPropertyChanged

    // this is the big image on the UI
    public ImageSource BigImage  get; set; 

    // this is a collection of thumbnails. When clicked, that image should become
    // the "big image"
    public ObservableCollection<ImageSource> Thumbnails  get; set; 

    public MainWindow()
    
        InitializeComponent();
        DataContext = this;

        Thumbnails = new ObservableCollection<ImageSource>();
        Thumbnails.Add(BigImage);
        Thumbnails.Add(new BitmapImage(new Uri(@"C:\Raw0.bmp")));
        Thumbnails.Add(new BitmapImage(new Uri(@"C:\Raw1.bmp")));
        Thumbnails.Add(new BitmapImage(new Uri(@"C:\Raw2.bmp")));
        NotifyPropertyChanged("Thumbnails");
    


    public event PropertyChangedEventHandler PropertyChanged;
    protected void NotifyPropertyChanged(string name)
    
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    


【问题讨论】:

【参考方案1】:

BigImage 不是 ImageSource 的属性。 Image 控件的 Source 需要绑定到 datacontext 本身。使用一个点来做到这一点。

<Image Source="Binding ."/>

然后将ItemsControl的SelectedItem绑定到BigImage对象上。

<ListBox ItemsSource="Binding Thumbnails" SelectedItem="Binding BigImage" Height="100">

【讨论】:

以上是关于WPF/C#单击图像缩略图->显示该图像大[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

单击缩略图时如何显示全尺寸图像?

当用户单击erb中的缩略图时如何显示全尺寸图像?

通过从缩略图或下一个上一个按钮中选择来更改图像

当英雄图像进入视口时如何突出显示缩略图

使用 QItemDelegate 显示图像缩略图

如何通过按图像保存在 NSArray 中的顺序单击缩略图来在滚动视图中打开图像?