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

时间:2013-02-05 10:12:42

标签: c# wpf image listbox selected

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

以下是我的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;

1 个答案:

答案 0 :(得分:0)

目前还不是很清楚,但是当你写作

ThumbnailPanel.DataContext = Frames;

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

ThumbnailPanel.DataContext = this;