2017-12-28 33 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

선택한 항목은 항상 항목 원본 목록 중 하나 여야합니다. 새 개체를 만들고 SelectedItem에 할당 할 수 없습니다. 콤보 박스는 단순히 객체 참조를 내용이 아닌 비교합니다.

+0

감사합니다. ObservableCollection을 기반으로 참조를 얻으려면 어떻게해야합니까? "val"또는 "name"으로 컬렉션의 항목을 선택해야합니다. – ManuKILLED

+0

쉬운 부분입니다. 단지 엔트리를 찾기 만하면됩니다. nodeWeek = weekSelection.Find (x => x.name == TheNameYouWantToFind); – gomi42

+0

예를 들면. 다음과 같이 참조를 설정하려고하는 경우 nodeWeek = weekSelection [1]; 여전히 작동하지 않습니다. 뭔가 다른 것이 틀림 없습니다. – ManuKILLED