C# 将collection绑定到WPF中的列表框
我有WPF的基本问题,我尝试设置C# 将collection绑定到WPF中的列表框,c#,wpf,C#,Wpf,我有WPF的基本问题,我尝试设置DataContext,绑定到集合,但不知何故,我仍然无法让它工作。我一直在寻找这样一个基本的问题。。。我一定错过了一些非常简单的东西。我感谢任何帮助:) 代码隐藏: public ObservableCollection<Photo> MyPhotos = new ObservableCollection<Photo>(); public DataTemplate() { InitializeComponent(); listBo
DataContext
,绑定到集合,但不知何故,我仍然无法让它工作。我一直在寻找这样一个基本的问题。。。我一定错过了一些非常简单的东西。我感谢任何帮助:)
代码隐藏:
public ObservableCollection<Photo> MyPhotos = new ObservableCollection<Photo>();
public DataTemplate()
{
InitializeComponent();
listBox.DataContext = MyPhotos;
MyPhotos.Add(new Photo(@"path to existing file"));
}
您需要将
DataTemplate
作为ItemTemplate
引用到列表框中。在数据模板中定义键
<Window.Resources>
<DataTemplate x:Key="MyItemTemplate" DataType="{x:Type local:Photo}">
<Border Margin="3">
<Image Source="{Binding Source}"/>
</Border>
</DataTemplate>
</Window.Resources>
<ListBox Name="listBox" ItemsSource="{Binding MyPhotos}" Background="Silver" Width="600" Margin="10" SelectedIndex="0" ItemTemplate="{StaticResource MyItemTemplate}"/>
MyPhotos必须是属性{get;set}函数,而不是字段
publicobservableCollection MyPhotos{get;set;}
代码隐藏:
DataContext=this
不listBox.DataContext=MyPhotos
XAML:添加DisplayMemberPath以显示数据
DisplayMemberPath=“源”
可能重复什么是照片
类?分享细节。您缺少属性绑定。你需要实施datatemplate@GaurangDave更新问题:)@jsanalytics将此添加到代码中,不是吗work@MichałTurczyn检查我答案中的更新。您的DataContext是错误的。
public class Photo
{
public string Source { get; set; }
public Photo(string path)
{
Source = path;
}
}
<Window.Resources>
<DataTemplate x:Key="MyItemTemplate" DataType="{x:Type local:Photo}">
<Border Margin="3">
<Image Source="{Binding Source}"/>
</Border>
</DataTemplate>
</Window.Resources>
<ListBox Name="listBox" ItemsSource="{Binding MyPhotos}" Background="Silver" Width="600" Margin="10" SelectedIndex="0" ItemTemplate="{StaticResource MyItemTemplate}"/>
listBox.DataContext = this;