你能在WPF中将一个列表框绑定到一个元组列表吗?

本文关键字:一个 列表 绑定 元组 WPF | 更新日期: 2023-09-27 18:17:47

如果我有一个列表<DateTime,DateTime>>我可以绑定到wpf的列表框吗?我当然知道我可以绑定到字典之类的但在这个例子中,我需要返回一个可能具有相同值的列表所以用一个元组的列表有意义(或者看起来有意义)吗?有人有什么想法吗?

你能在WPF中将一个列表框绑定到一个元组列表吗?

是的,您可以将ListBox绑定到Tuples集合。但是,除非有不这样做的理由,否则我将拥有您自己类型的集合,因为Tuple类型上公开的属性并不是特别具有描述性。

当然,您可以绑定到它。我把下面的代码放在一起:

public partial class MainWindow : Window
{
    private readonly ObservableCollection<Tuple<DateTime, DateTime>> _dates = new ObservableCollection<Tuple<DateTime,DateTime>>();
    public ObservableCollection<Tuple<DateTime, DateTime>> Dates { get { return _dates; } }
    public MainWindow()
    {
        DataContext = this;
        InitializeComponent();
        PopulateList();
    }
    private void PopulateList()
    {
        _dates.Add(new Tuple<DateTime, DateTime>(DateTime.Now, DateTime.Now));
        _dates.Add(new Tuple<DateTime, DateTime>(DateTime.Now, DateTime.Now));
        _dates.Add(new Tuple<DateTime, DateTime>(DateTime.Now, DateTime.Now));
    }
}
XAML:

<Window x:Class="GuiScratch.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox ItemsSource="{Binding Dates}"/>
    </Grid>
</Window>

当我运行它时,我看到一个包含两个日期时间的列表,作为列表成员连接在一起。

也就是说,你是否想这样做可能更多地取决于特定的上下文。如果需要具有非常可插拔的绑定类型是有意义的(例如,日期时间可以更改为string或int),这可能是一个不错的选择。如果你不这样做,我想说你最好绑定一些更有表现力的东西。