我有一个这样的列表框:
<ListBox x:Name="list1" ItemsSource="{Binding MyListWithTuples}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding value1}" />
<Label Content="{Binding value2}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我的视图模型中,我有这个集合:
private ObservableCollection<(decimal value1, decimal value2)> _myCollection= new ObservableCollection<(decimal value1, decimal value2)>();
public ObservableCollection<(decimal vaule1, decimal value2)> MyCollection
{
get { return _myCollection; }
set
{
_myCollection= value;
base.RaisePropertyChangedEvent("MyCollection");
}
}
但是没有显示数据。但是,如果将元组转换为字典,则可以绑定到键和值属性,并显示数据。但我想避免将元组转换为字典。
是否可以将列表框绑定到元组列表?
谢谢。
答案 0 :(得分:3)
与Tuple Class不同,新的C# tuple types仅定义字段,而没有属性。因此,您不能将它们与WPF数据绑定一起使用。
但是,与
public ObservableCollection<Tuple<decimal, decimal>> MyCollection { get; }
您可以使用此XAML:
<ListBox ItemsSource="{Binding MyCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Item1}" />
<Label Content="{Binding Item2}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>