簡體   English   中英

如何從后面的代碼實例化WPF ResourceDirectory

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM