2

MVVM アプリケーションがあり、1 つの int プロパティの値に基づいて View にわずかな変更を加える必要がある (この例では単純化されています) という要件があります。

たとえば、プロパティの値が 1 の場合、1 つのビューのボタンの背景色を変更する必要があります。値が 2 の場合、1 つを非表示Labelにして a のテキストを太字にする必要があります。TextBox値が 14 の場合、2 を非表示にする必要がありますLabels

アプリケーションのビルド後に値を決定できるため、ファイル、リフレクションを使用して実行時にロードされるアセンブリ、またはアプリケーション全体をデプロイせずにビューで実行する必要があるものを指定するものが必要です。

主なアイデアは、ビューを作成し、使用可能なすべての項目に名前を付けて、実行時にロードされたアセンブリで定義されたクラスに渡し、ビューで何をすべきかを知ることです。このアプローチで見られる問題は、ビュー上のすべてのものに名前を定義する必要があることです。

要件を満たすためのより良いアプローチがあると思いますか? ビューで行う変更は、常にいくつかのプロパティにすぎません。

前もって感謝します。

4

2 に答える 2

1

@vitaliyzadorozhnyy が提案する解決策は実際に実行可能です。私たちは定期的にこのように働いています。xml ファイルに他ならない xaml ファイルをロードし、xml ファイルを操作してから、次を使用して xaml コントロールをレンダリングします。

XamlReader.Parse(TemplateString);

あなたの場合、これは最善の解決策ではないと思います。サポートする必要がある WPF のバージョンによっては、VisualStateManager

一般的に言えば、最初に一連の VisualStates を定義してから、次を呼び出します。

VisualStateManager.GoToState(control, "stateName", useTransition);

int 値に基づいて目的の構成に移動するには。

これを機能させるには WPF Toolkit が必要であることに注意してください。http://elijahm.ninjuro.com/2012/01/04/visual-states-in-wpf-4-0/に良い記事があります 。

于 2013-09-06T13:18:24.313 に答える