2017-12-01 3 views
0

지난 몇 시간 동안 내 머리를 아프게했습니다. 문제가 해결하기 쉽습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다 :)Bind ComboBox WPF 사용자 지정 개체

xml 파일을 편집 할 수있는 WPF 프로젝트가 있습니다. 나는 다음과 같은 속성이 있습니다 FilterSetting라는 객체에 XML 파일을 직렬화 :

public int FilterType {get; set;} 
    public string FilterName {get; set;} 
    public string FilterDescription {get; set;} 

내가 두 개의 텍스트 상자가 다음 값

Dictionary<int, string> d = new Dictionary<int, string>(); 
     d.Add(1, "FilterType 1 description"); 
     d.Add(2, "FilterType 2 description"); 
     d.Add(3, "FilterType 3 description"); 
     d.Add(4, "FilterType 4 description"); 
     d.Add(5, "FilterType 5 description"); 
     d.Add(6, "FilterType 6 description"); 
와 정적 사전에서 생성 된 콤보를

나는 데이터 컨텍스트를 설정 FilterSetting 개체로 이동하고 텍스트 상자에 양방향 바인딩을 수행하여 FilterName 및 으로 잘 작동합니다. 내가 뭘하고 싶습니다 내 사전에서 옵션을 사용하여 동일한 방식으로 ComboBox를 바인딩하고 내 FilterSetting 개체의 FilterType 속성에 양방향 바인딩을 수행합니다.

어떻게하면됩니까? :)

피터 난 당신이 요구하는 것을 이해한다면

+0

나는 당신이하려는 일에 다소 혼란스러워합니다. FilterType, FilterName 및 FilterDescription을 포함하는 개체가 있습니다. 이 모든 것들이 함께하는 아이템처럼 들립니다. 다음으로, 이름 및 설명을위한 Textbox와 FilterType-> FilterDescription을 나타내는 사전이있는 콤보 상자가있는 UI가 있습니까? 콤보 상자에 대한 양방향 바인딩을 만드는 경우 ENTIRE 설정 개체 (유형, 이름 및 설명)의 값을 수정하려고합니까? 또는 아마도 필터 속성 간의 관계를 오해하고 있습니다. :) 나는 대답하기 전에 오해하고 싶지 않아. – Rowbear

답변

0

, 당신이 FilterType에 결합하면서 콤보는 설명을 표시 할 것으로 보인다. 그런 경우 DisplayMemberPath 및 SelectedValuePath를 사용하여이 작업을 수행하십시오. 예 : xml :

<ComboBox ... 
DisplayMemberPath = "FilterDescription" 
SelectedValuePath = "FilterType" 
.../> 
+0

그의 ItemsSource는 사전이므로, SelectedValuePath에 대한 Key와 DisplayMemberPath에 대한 Key가 필요합니다. –

+0

안녕하세요, Andrew와 Ed. 내 사전에서 설명을 표시하는 콤보 상자를 원한다면 Key for SelectedValuePath 및 DisplayMemberPath 값을 사용하면됩니다. 그러나 FilterSetting 개체를로드 할 때 콤보 상자 값이 자동으로 설정되지 않고 변경 내용이 텍스트 상자와 같이 저장되지 않습니다. 어떻게 든 FilterSetting 개체를 콤보 박스에 연결해야합니다. –

+0

SelectedValue = "{Binding FilterSetting.FilterType}"을 설정 했습니까? –