如何在列表框中绑定元组列表?

时间:2018-10-26 17:51:01

标签: wpf

我有一个这样的列表框:

<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");
            }
        }

但是没有显示数据。但是,如果将元组转换为字典,则可以绑定到键和值属性,并显示数据。但我想避免将元组转换为字典。

是否可以将列表框绑定到元组列表?

谢谢。

1 个答案:

答案 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>