カスタム コントロール ライブラリを作成し、ルート パスに「FlipView」という名前のコントロールを作成しました。次に、スタイルを削除し、ルート パスでGeneric.xaml
指定された独自のリソース ディクショナリに移動しました。次に、次のコードを使用して、FlipView.xaml
そのリソース ディクショナリをマージします。Generic.xaml
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FlipView.xaml" />
</ResourceDictionary.MergedDictionaries>
次に、別のwpfプロジェクトでコントロールを使用しましたが、XamlParseException
とInnerException
言っ てスローします
リソース 'flipview.xaml' が見つかりません。
なぜできないのですか?リソース ディクショナリは、コントロール ライブラリ プロジェクトのルート パスにあります。
Source
プロパティ セッターを"pack://application:,,,/MyCustomControls;component/FlipView.xaml"
(はカスタム コントロール ライブラリの名前です)に置き換えると、MyCustomControls
完全に正常に動作します。
Generic.xaml:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyCustomControls;component/FlipView.xaml" />
</ResourceDictionary.MergedDictionaries>
これはなぜですか?
WPF プロジェクトの場合、ルート パスを参照し、再びpack://application,,,/
ルート パスを参照するため、これは冗長に見えます。WpfAssemblyName;component/
なぜ必要なのGeneric.xaml
ですか?
編集:この質問を見ましたが、理由が説明されていません。