6

ユーザー インターフェイスで WPF と MVVM パターンを使用しています。私の ViewModel には、ミリメートル単位の距離を含むリストがあり、ListView.ItemsSource をリストにバインドして ListView に表示します。ただし、「メトリック」チェックボックスの状態に応じて、メートルまたはフィートのいずれかのより自然な単位を使用して表示される値を希望します。

私はいくつかの単純なクラス、MillimetresToMetresConverter と MillimetresToFeetConverter を作成しました。どちらも IValueConverter を実装しています。データ バインディングの Converter プロパティをどちらかに設定することはできますが、チェックボックスの状態が変化したときにこれらのコンバーターを切り替える方法がわかりません。

私の計画は、ViewModel にフィールド "IValueConverter lengthConverter" を設定して、コンバーターまたは別のコンバーターに設定し、XAML で設定することでし...="{Binding Converter={Binding Path=lengthConverter}}"た。残念ながら、Converter は依存関係プロパティではないため、これは機能しません。

実行時にデータバインディングで使用されるコンバーターを変更するにはどうすればよいですか?

4

2 に答える 2

0

簡単な代替ソリューションを提案する場合: FormatMillimetresConverterViewModel に小さなものを作成し、そのUseMetricプロパティは「メトリック」チェックボックスにバインドされます。

于 2009-10-27T14:07:17.050 に答える