ファイルを検討する | 以下を含む WPF アプリケーションの新しいプロジェクト:
- CustomControl1 という名前の新しいカスタム コントロール
- Dictionary1 と Dictionary2 という名前の 2 つの新しいリソース ディクショナリ
生成されたスタイルを Generic.xaml から取り出し、Dictionary2 に移動します。次に、次のように Dictionary2 を Dictionary1 にマージし、Dictionary1 を Generic にマージします。
<!--Generic.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Themes/Dictionary1.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!--Dictionary1.xaml-->
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Dictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
次に、CustomControl1 のインスタンスを MainWindow のグリッドに追加します。(この部分は問題を再現するために必要です。プロジェクトは常に正常にコンパイルされます。実行時にのみ問題が表示され、辞書を参照する必要があります。)
Dictionary1.xaml では、同じフォルダー内の別の dict にマージしているため、単純な Source="Dictionary2.xaml" が機能します。しかし、Generic.xaml では絶対 URI を使用する必要があります。上記を pack://application なしで Source="Dictionary1.xaml" に変更すると、MainWindow を構築しようとすると、IOException "リソース 'dictionary1.xaml' が見つかりません" が原因で XamlParseException が発生します。
私の質問: 相対 URI 解決に関する generic.xaml の特別な点とその理由を教えてください。