如果我有一个List< Tuple< DateTime,DateTime>>我可以将它绑定到wpf中的列表框吗?我当然知道我可以绑定到字典或其他什么,但在这个原因我需要发回一个可能具有相同值的列表,所以有意义(或似乎)有一个元组列表是否有意义?有人有任何想法吗?
答案 0 :(得分:5)
是的,您可以将ListBox绑定到元组的集合。但是,除非有理由不这样做,否则我将拥有您自己类型的集合,因为在元组类型上公开的属性不是特别描述。
答案 1 :(得分:2)
当然,你可以绑定它。我将以下代码汇总在一起:
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>
当我运行它时,我会看到一个项目列表,其中两个日期时间连接为列表成员。
那就是说,你是否愿意这样做可能更多地取决于具体的背景。如果需要具有非常可插入的绑定类型是有意义的(即日期时间可能会更改为字符串或int),这可能是一个不错的选择。如果你不这样做,我会说你最好能够结合更具表现力的东西。