无法将图像绑定到列表框并在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;
这还不太清楚,但当您编写时
ThumbnailPanel.DataContext = Frames;
这是Frames
属性吗?那么ItemsSource="{Binding Frames}"
绑定将如何工作?我想您需要将DataContext
设置为具有Frames
和MediaFrame
属性的对象。也许:
ThumbnailPanel.DataContext = this;