2011-12-14 21 views
4

リストがある場合<タプル< DateTime、DateTime >> wpfのリストボックスにバインドできますか?私はもちろん辞書やその他のものにバインドすることができますが、この理由から同じ値を持つ可能性のあるリストを返す必要があるので、タプルのリストを持つことは理にかなっています。誰もが思考を持っていますか?リストボックスをWPFでタプルのリストにバインドできます

+0

List Paparazzi

+0

タプルは使用しないでください。私はそれが恐ろしい練習であることを決定する前に約5分間タプルをテストしました。非常に短い時間でプロパティを記述するオブジェクトを作成することができます。 2ヵ月後にTupleと一緒に「WTF、そのオブジェクトは?」と言うコードに戻ってきます。オブジェクトを作る。 /$0.02 –

答えて

2

確かに、あなたはそれにバインドすることができます。私はリストのメンバーとして連結2つの日付時刻と項目のリストを参照してください、ということを実行すると

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

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:私は一緒に背後に以下のコードを投げました。

あなたがこれをしたいのかどうかは、特定の状況によります。非常にプラグイン可能なバインディングタイプを持つ必要がある場合(つまり、日付時刻が文字列またはintに変更される可能性がある)、これは良いオプションです。そうしないと、表現力豊かなものに縛られていないほうが良いと言えるだろう。

5

はい、ListBoxをタプルのコレクションにバインドできます。ただし、そうしないといけない理由がない限り、タプルタイプで公開されているプロパティは特に説明的ではないため、独自のタイプのコレクションがあります。