MyResource
アプリケーションに次のようなクラスがあります。
public class MyResource : IMyResource
{
// ... whatever ...
}
App.xaml.cs でアプリケーションを初期化すると、Autofac を使用して次のようになります。
builder.Register<IMyResource>(container => new MyResource());
ここで、次のように WPF アプリケーションにStaticResource
を追加する必要があります。Window
<Window.Resources>
<local:MyResource x:Key="MyResource" />
</Window.Resources>
しかしもちろん、ここでの具体的なインスタンスを参照することは全体のアイデアではありませんMyResource
。さらに、アプリケーション全体MyResource
で異なるWindow
やのインスタンスを使用する必要がある場合があります。そのため、Autofac コンテナーを介して解決されるfor myUserControl
のインスタンスを使用したいと思います。どうすればこれを達成できますか?MyResource
StaticResource
Window
のコード ビハインドにリソースを追加することを考えていWindow
ましたが、コンテナーに不要な依存関係が作成される可能性があります。
アプリケーションを初期化するときに、App.xaml.cs でそのようなことをすることも考えていました。
App.Current.MainWindow.Resources.Add("MyResource", container.Resolve<IMyResource>());
しかし、XAML でリソースを使用すると
<ListBox ItemsSource="{Binding Source={StaticResource ResourceKey=MyResource}}"/>
MyResourceXAMLParseException
という名前のリソースが見つからないという内部例外のメッセージが表示されます。そして効いていたとしても、ちょっと臭い気がします。
では、これはどのように達成できるのでしょうか。可能なだけですか?そうでない場合、これを実装する最良の方法は何ですか?