1

したがって、「Class1」というアイテムの ObservableCollection があり、Class1 には「ID」という名前のプロパティがあります。

WPFToolkit のデータグリッドを使用して、このコレクションにバインドします。データグリッド内にはコンボボックス列があり、その ItemsSource をクラスの ID プロパティにバインドします。

この時点で、すべてが正常であり、すべてが正常に読み込まれます。私がやりたいことは、ComboBox で選択された値を反映するように ObservableCollection を変更することです。

次のように、ValueConverter を ComboBox の SelectedItemBinding にバインドしています。

SelectedItemBinding="{Binding Path=ID, Converter={StaticResource IDConverter}}

コレクションを変更するのに最適な方法 (つまり、WPF が承認した方法) は何ですか? IDConverter ConvertBack() メソッドが呼び出されると、適切な Class1 インスタンスを取得しますが、ValueConverter 内から Observable コレクションにアクセスできず、Datagrid から SelectedIndex 値にもアクセスできません。

コレクションへのポインターを持つ静的リソースとしてクラスを作成し、それを ConverterParameter として渡すこともできますが、それはちょっとばかげているように思えます。

4

1 に答える 1

0

レコードの場合、簡単な解決策は、依存関係プロパティとして変更するコレクションへの参照を使用してローカルリソースを作成することです。次に、これをConverterParameterとして渡し、ConvertBack()インターフェイスメソッドでアクセスできます。

警告:コレクションに変更を加えた後、フォーカスを失うと、DeferRefresh例外が発生する可能性があります。優れた修正はここにあります: http ://social.msdn.microsoft.com/Forums/en/wpf/thread/187b2b8f-d403-4bf3-97ad-7f93b4385cdf

于 2010-10-26T05:08:55.390 に答える