2

WPF (.NET Core) アプリケーション プロジェクトで、すべてのカスタム コントロール (クラス定義と UI スタイルの .xaml ファイルの両方、各カスタム コントロールにはこれらのファイルのペアがあります) を含むフォルダーを定義しました。これらのカスタム コントロールを同じアセンブリで使用する場合、以下に示す /Themes/Generic.xaml ですべての UI スタイルをマージして、既定のスタイルをカスタム コントロールに関連付けます。

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/CustomControl/SomeCustomControlStyle.xaml" />
    <!-- Similarly list all other custom control xaml files -->
</ResourceDictionary.MergedDictionaries>

カスタム コントロールごとに、対応する xaml は次のようにスタイルを定義しませんx:Key

<Style TargetType="{x:Type SomeCustomControl}" >
    <Setter Parameter="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type SomeCustomControl}">
                <!-- UI Definitions -->
            </<ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

すべてのカスタム コントロールは、静的コンストラクターから派生しControl、静的コンストラクターを含みます。

DefaultStyleKeyProperty.OverrideMetadata(typeof(SomeCustomControl), 
                new FrameworkPropertyMetadata(typeof(SomeCustomControl)));

プロジェクトが正常にビルドされ、アプリケーションの実行時にカスタム コントロールが表示されます。ただし、Visual Studio デザイナーはカスタム コントロールを表示できず、エラーを報告します

XDG0062 Cannot locate resource 'customcontrols/somecustomcontrol.xaml'.

既定のスタイルを個々の .xaml ファイルから Generic.xaml に移動しようとしましたが、問題は解決できます。ただし、かなりの数のカスタム コントロールがあり、単一の Generic.xaml を使用してすべての UI を定義するのはあまり理想的ではありません。しかし、デザイナで UI 要素を確認できないことも非常に不便です。何か不足していますか?Visual Studio のバグですか? 回避策はありますか?

ありがとう!

4

1 に答える 1