[英]How to instantiate a WPF ResourceDirectory from code behind
嗨,我正在嘗試從目錄后面的代碼創建一個ResourceDirectory,似乎是蜜蜂創建的,但是它是空的(在xaml文件中指定的資源是不存在的。
C#代碼:
public static void InstallResources(IUnityContainer container)
{
var viewModelLocatorResources = new ViewModelLocatorResources();
viewModelLocatorResources.InitializeComponent();
Application.Current.Resources.MergedDictionaries.Add(viewModelLocatorResources);
var viewModelLocator = (KViewModelLocator)Application.Current.Resources.FindName("ViewModelLocator");
// Error viewModelLocator is null
var viewModelResolver = (UnityViewModelResolver)viewModelLocator.Resolver;
viewModelResolver.SetContainer(container);
}
XAML代碼:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModelSupport="clr-namespace:KWPFComponents.ViewModelSupport"
x:Class="ViewModelLocatorResources">
<viewModelSupport:KViewModelLocator x:Key="ViewModelLocator">
<viewModelSupport:KViewModelLocator.Resolver>
<viewModelSupport:UnityViewModelResolver />
</viewModelSupport:KViewModelLocator.Resolver>
</viewModelSupport:KViewModelLocator>
</ResourceDictionary>
請嘗試以下操作:
var resourceDictionary = new ResourceDictionary
{
Source = new Uri("/AssemblyName;component/DictionaryName.xaml", UriKind.Relative)
};
var viewModelLocator = (KViewModelLocator)resourceDictionary["ViewModelLocator"];
這假定您的程序集的名稱是AssemblyName,並且資源字典的文件名是DictionaryName.xaml。 它還假定此文件位於項目的根目錄下。 如果在另一個目錄中,則需要適當地修復URI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.