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 のバグですか? 回避策はありますか?
ありがとう!