2016-06-30 2 views
0

私は以下のような項目を持つコンボボックスを持っている:SilverlightのコンボボックスのSelectedValueの文字列プロパティは

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

私のコンボボックスは、Valueでそれを表示します。私の問題は私のコンボボックスの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

キー値のペアを使用して動作を実現することはできません。以下の例を参照してください。 キー用とキー用の2つのプロパティを持つクラスを作成するだけです。その後、このクラスのコレクションをitemsSourceとしてバインドし、選択した値を文字列プロパティにバインドします。つまり、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プロパティになります。

他の2つを理解するには、まずSelectedItemを理解する必要があります。 SelectedItemは、現在選択されているEmployeeオブジェクトをコンボボックスから返します。また、SelectedItemにEmployeeオブジェクトを割り当てて、ComboBoxの現在の選択範囲を設定することもできます。

SelectedValuePathは、現在選択されている従業員のIDをSelectedValueで取得できることを意味します。 SelectedValueをId(従業員リストに存在すると想定)に設定することによって、ComboBoxで現在選択されている従業員を設定することもできます。