0

アプリケーションに固有のカスタム ビューを実装しようとしていますが、うまくいきません。ここに私の問題があります: ユーザーが実行時にビューを動的に切り替えられるようにしたいので、カスタム ビューが必要です。コントロール テンプレートとデータ テンプレートだけでなく、リストビュー レイアウトも変更する必要があるため、(データ テンプレートだけではなく) カスタム ビューが必要です。すべてのチュートリアルは、viewbase から派生したカスタム クラスを実装し、DefaultStyleKey と ItemContainerDefaultStyleKey をオーバーライドして、generic.xaml で定義された ComponentResourceKey を返すように指示しています。ただし、問題は、そのアプリケーションに固有のいくつかのビューを作成しようとしていることです。特定のブラシとフォントは、アプリケーション全体で一貫していますカスタムビューはこれらを使用します。つまり、アプリケーション レベルの Forebrush、Shadowbrush、Deepshadowbrush、TextDecorator などがあり、ビューでこれらを使用する必要があります。ビューが外部の generic.xaml で定義される場合、これらにバインドするのは非常に複雑なマークアップになります。さらに、とにかくアプリケーション固有になります (これらのブラシにバインドする場合)。実行時に変更できるアプリケーション内のビューのスタイルを定義する方法を知っている人はいますか?

4

1 に答える 1

0

詳細については少し混乱していますが、実行時に ListView のスタイルを設定することができます... CustomStyle は、ListView に適用する定義済みのスタイルです。

ListView view = new ListView();
view.Style = CustomStyle;

DefaultStyleKey はカスタム コントロールに適用できます (これは UserControl とは異なります)。ウィジェットと呼ばれる新しいコントロールが必要だとします。デフォルトのスタイルが定義されていないため、そのウィジェットの DefaultStyleKey を定義する必要はありません。UserControl はコントロールのコレクションであるため、定義済みのスタイル自体はありません。

さらに、 を作成しResourceDictionaryてスタイルを分割することもできます。その後、App.xaml などを介してそれらをマージできます...

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Themes/Generic.xaml"/>
                <ResourceDictionary Source="Themes/ListViewStyles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
于 2010-10-12T15:17:00.703 に答える