2017-01-03 48 views
2

私は共有プロジェクト(resource dictionary in shared project)でカスタムコントロールを持っています。XAMLデザイナーがリソースを見つけることができません

リソース 'mycontrol.xaml' を見つけることができません:

すべては、実行時に正常に動作し、XAMLデザイナはしかし、例外がスローされます。

コントロールのスタイルをロードする際に問題が発生します。

public class MyControl: Control 
{ 
    public MyControl() 
    { 
     Resources = new ResourceDictionary() { Source = new Uri("pack://application:,,,/mycontrol.xaml") }; 
     Style = (Style)Resources["somekey"]; 
    } 
} 

は、それが実行時に動作し、設計時にないのはなぜ?

私は設計時間を検出できますが、それではどうしたらいいですか?

答えて

4

他のプロジェクトからxamlファイルを読み込む際に、WPFデザイナーに問題があるようです。あなたはこの注釈を使用してXAMLファイルをロードしようとすることができます:

pack://application:,,,/PROJECTNAMESPACE;component/mycontrol.xaml 
+0

をしようとするだろう。 https://msdn.microsoft.com/en-US/library/aa970069(v=vs.110).aspx#ResourceファイルパックURI – c0d3b34n

+0

この驚くべきことに、この構文はデザイナーを幸せにします。以前はそれを使用していましたが、共有プロジェクトの場合は問題ですが、問題はありません)。ありがとう。 – Sinatr

0

リソースが名前空間を指定する必要はありません同じアセンブリ内に配置されている場合は、私が

Uri res = new Uri("pack://siteoforigin:,,,/mycontrol.xaml", UriKind.Relative); 
Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = res }); 
+0

'siteoforigin'は、実行可能アセンブリが起動された場所に格納されている、XAMLのオリジンファイルサイトのpack URIです。*([msdn](https://msdn.microsoft.com/ja) -us/library/aa970069(v = vs.110).aspx))。xamlを外部に保存することを推奨している場合を除きます。 – Sinatr

+0

aaaaah、my fault ... :-) – c0d3b34n

関連する問題