无法将图像绑定到列表框并在wpf中获取所选项目

本文关键字:wpf 获取 项目 选项 图像 绑定 列表 | 更新日期: 2023-09-27 17:57:35

我需要在ListBox中水平显示一组图像,这是我可以实现的。然而,这里面临的挑战是,当我单击或选择ListBox中的任何图像并在代码隐藏中获得所选图像时,无法将所选项目(Image)绑定到ListBox-selected项目属性。

以下是我的XAML代码,稍后是我的XAML.cs代码。如果我缺少解决问题的方法,请告诉我。

谢谢。

<ListBox Grid.Row="1" x:Name="ThumbnailPanel" ItemsSource="{Binding Frames}"
              SelectedItem="{Binding Path=MediaFrame,Mode=TwoWay}"
              ScrollViewer.CanContentScroll="True"
              ScrollViewer.VerticalScrollBarVisibility="Disabled"
              ScrollViewer.HorizontalScrollBarVisibility="Hidden">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <UniformGrid Columns="20" Rows="1">
                </UniformGrid>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>

    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string property)
    {
        var propertyChanged = PropertyChanged;
        if (propertyChanged != null)
        {
            propertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
    public ObservableCollection<Image> Frames { get; set; }
    public Image MediaFrame
    {
        get
        {
            return mediaFrame;
        }
        set
        {
            if (mediaFrame != value)
            {
                mediaFrame = value;
                OnPropertyChanged("MediaFrame");
            }
        }
    }
    private Image mediaFrame;
    if (Frames == null)
            {
                Frames = new ObservableCollection<Image>();
            }
            Frames.Add(
                new Image
                {
                    Source = imageSource,
                    ToolTip = _mediaPlayer.Position,
                    MaxWidth = _mediaPlayer.NaturalVideoWidth,
                    MaxHeight = _mediaPlayer.NaturalVideoHeight,
                    Margin = new Thickness(2)
                });
            ThumbnailPanel.DataContext = Frames;

无法将图像绑定到列表框并在wpf中获取所选项目

这还不太清楚,但当您编写时

ThumbnailPanel.DataContext = Frames;

这是Frames属性吗?那么ItemsSource="{Binding Frames}"绑定将如何工作?我想您需要将DataContext设置为具有FramesMediaFrame属性的对象。也许:

ThumbnailPanel.DataContext = this;