2017-12-28 14 views
0

選択したアイテムをコンボボックスに定義しようとしています。選択した項目を宣言するのにStringを使用していて、オブジェクトを使用していない場合はうまく動作します。WPF ComboBoxオブジェクトを参照して選択したアイテム

<ComboBox HorizontalAlignment="Left" 
    VerticalAlignment="Top" Width="81" materialDesign:HintAssist.Hint="Woche" Margin="10" 
    ItemsSource="{Binding weekSelection}" 
    DisplayMemberPath="name" 
    SelectedItem="{Binding nodeWeek, Mode=TwoWay}" 
SelectedValue="name" /> 

-

private week _nodeWeek; 
public week nodeWeek 
{ 
    get 
    { 
     return _nodeWeek; 
    } 
    set 
    { 
     _nodeWeek = value; 
     RaisePropertyChanged("nodeWeek"); 
    } 
} 

-

public class week 
{ 
    public int val { get; set; } 

    public String name { get; set; } 
} 

- 選択した項目

this.nodeWeek = new week() { val = times.GetIso8601WeekOfYear(DateTime.Now), name = "KW " + times.GetIso8601WeekOfYear(DateTime.Now).ToString() }; 

を設定することを修正する方法はありますか?

+0

データソースプロパティを使用してバインドできますか? https://stackoverflow.com/questions/561166/binding-wpf-combobox-to-a-custom-list – BLU

答えて

2

選択したアイテムは、常にあなたのアイテムのソースのリストの1つである必要があります。新しいオブジェクトを作成してSelectedItemに割り当てることはできません。コンボボックスは、コンテンツではなく単にオブジェクト参照を比較します。

+0

ありがとう! ObservableCollectionに基づいて参照を取得するにはどうすればよいですか? "val"や "name"でコレクションのアイテムを選択する必要があります – ManuKILLED

+0

これは簡単な部分です。エントリを単に「検索」します:nodeWeek = weekSelection.Find(x => x.name == TheNameYouWantToFind); – gomi42

+0

たとえば、このような参照を設定しようとしている場合:nodeWeek = weekSelection [1];まだ動作していない、別の何かが間違っている必要があります私は – ManuKILLED

関連する問題