0

更新: ディクショナリからキーを返す必要があるだけです。ディクショナリは Web サービスによって作成され、WPF である私のプログラムに返されます。ディクショナリは、次の値を含むドロップダウンに入力されます。

IT_ED
IT_FS
IT_BUS

割り当てられているキーは次のとおりです。

Key Value
[1] IT_ED
[2] IT_FS
[3] IT_BUS

ドロップダウンメニューで選択されている項目に基づいて、値からキーが必要です

キーを格納するために使用する辞書

private Dictionary<int, string> _DivisionDict = new Dictionary<int, string>();

private Dictionary<int, string> DivisionDict
{
    get { return _DivisionDict; }
    set { _DivisionDict = value; }
}

ドロップダウンメニューと辞書にキーを入力する方法は次のとおりです

foreach (var D in Divisions)
{
   txtY.Items.Add(D.Value);
   DivisionDict.Add(D.Key, D.Value);
}
4

1 に答える 1

1

わかりました、それは今の方が良いです(質問)、
それで、私が正しく理解できれば、WPFドロップダウン(つまりComboBox)で選択されたアイテムから「インデックス」を取得したいと思います。

まず、ビューモデルを介して適切なデータ「バインディング」を行うのが最も簡単です。

ItemsSource="{Binding YourDictionaryProperty}" 
SelectedItem="{Binding Path=YourDictionarySelectedItem, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"  
DisplayMemberPath="Value"
  • View Model クラスを介して辞書を公開します。あなたが作成したプロパティのように、
  • コンボボックス(または親など)のデータコンテキストとしてビューモデルを配置し、
  • バインディングに使用される両方のプロパティ (YourDictionarySelectedItemおよびYourDictionaryProperty) は、ビュー モデルのプロパティです。1 つは Dictionary を「そのまま」公開し、もう 1 つは KeyValuePair ...SelectedItem です。参考までに、
  • 上記のようなことを...

...次に、YourDicitonarySelecteItemビューモデルで-辞書からKeyValuePairを取得します。それから、インデックスと値の両方がわかります。

または、brute force選択した値を(現在の設定方法に基づいて「出力」として持っている場合)、たとえばLINQを介して辞書で見つけることです...

Divisions.Where(d=>d.Value == "selected value").FirstOrDefault();  

...これで「ペア」が得られ、そこからKey.

今回は成功したことを願っています:)、乾杯

編集: 適切なディクショナリ バインディングは元のスコープに含まれていなかったため、迅速な修正ソリューションです。ディクショナリを「後ろから」更新する必要がある場合は、監視可能なコレクションを使用するか、アイテムが変更されるたびに完全なディクショナリで OnPropertyChanged を強制する必要があります。詳細については、このリンクを参照してください
。Two Way Data Binding With a Dictionary in WPF

于 2012-04-12T13:57:40.867 に答える