2016-06-30 2 views
0

나는 다음과 같은 항목 콤보 상자가 있습니다실버 라이트 콤보 상자 selectedvalue 문자열 속성은

{[1, US]} 
{[2, UK]} 

내 콤보가 Value으로 표시됩니다. 내 문제는 내 combobox의 SelectedValue 속성을 설정할 수 없습니다.

<ComboBox Name="cbSource" Grid.Row="1" Grid.Column="3" 
ItemsSource="{Binding Datas.Countries, Mode=OneWay}" 
SelectedValue="{Binding CurrentObject.Country, Mode=TwoWay}"  
DisplayMemberPath="Value" SelectedValuePath="Key"></ComboBox> 

지금 내 CurrentObject.CountryUK의 값을 문자열 속성입니다. 나도 아래에서 이것을 시험해 보았다. 그러나 행운이 없다.

DisplayMemberPath="Value" SelectedValuePath="Value" 

여기서 어떻게 할 수 있습니까?

+0

나는 당신이 여기서 물어 보려고하는 것을 얻지 못한다. 명확히하십시오. – Martin

답변

0

키 값 쌍을 사용하여 동작을 수행 할 수 없습니다. 아래 예제를 참조하십시오. 키에 대해 하나의 속성과 값에 대해 하나씩 두 개의 속성이있는 클래스를 만듭니다. 그런 다음이 클래스의 컬렉션을 itemssource로 바인딩하고 selectedvalue를 문자열 속성에 바인딩합니다. 즉 Datas.Countries는 클래스의 컬렉션입니다.

<ComboBox Name="cbSource" Grid.Row="1" Grid.Column="3" 
ItemsSource="{Binding Datas.Countries, Mode=OneWay}" 
SelectedValue="{Binding SomePropertyToHoldKeyValue, Mode=TwoWay}"  
DisplayMemberPath="Value" SelectedValuePath="Key"></ComboBox> 

나는 우리가 selectedItem가, SelectedValue, DisplayMemberPath 더 나은 예와 SelectedValuePath의 차이를 이해 수 있다고 생각합니다. Name 속성에

<ComboBox ItemsSource="{Binding Source={StaticResource Employees}}" 
      DisplayMemberPath="Name" 
      SelectedValuePath="Id"/> 

DisplayMemberPath 점 때문에 콤보 상자에 표시되는 값 드롭 다운 목록에 포함 된 직원 항목됩니다

public class Employee 
{ 
    public int Id; 
    public string Name; 
} 

다음과 같은 XAML이 클래스를 참조하십시오 Employee 객체의 Name 속성이됩니다.

다른 두 가지를 이해하려면 먼저 SelectedItem을 이해해야합니다. SelectedItem은 현재 선택된 Employee 객체를 ComboBox에서 반환합니다. SelectedItem에 Employee 개체를 할당하여 ComboBox에서 현재 선택 항목을 설정할 수도 있습니다.

SelectedValuePath은 현재 선택된 직원의 ID를 SelectedValue으로 가져올 수 있음을 나타냅니다. SelectedValue을 ID (Employees 목록에 있음)로 설정하여 ComboBox에서 현재 선택된 Employee를 설정할 수도 있습니다.

관련 문제