簡體   English   中英

從WinForms中嵌入的WPF控件獲取Generic.xaml

[英]Getting Generic.xaml working from WPF control embedded in WinForms

我有一個Windows窗體中嵌入的WPF控件,工作正常。 但我在Themes / Generic.xaml中的WPF項目中擁有所有樣式。 當我將WPF控件嵌入Windows窗體ElementHost控件時,不會拾取這些樣式。

我是否需要更改WPF視圖以在其“資源”部分中明確包含樣式,還是應該自動拾取generic.xaml文件?

Themes / Generic.xaml是否在不同的程序集中?

問題是應用程序沒有找到定義樣式的ResourceDictionary。

你可以做的是創建一個像這樣的靜態SharedDictionaryManager類:

public static class SharedDictionaryManager
{
    private static ResourceDictionary _sharedDictionary;
    internal static ResourceDictionary SharedDictionary
    {
        get
        {
            if (_sharedDictionary == null)
            {
                System.Uri resourceLocater =
                    new System.Uri("/assembly;component/Themes/Generic.xaml",
                                    System.UriKind.Relative);

                _sharedDictionary =
                    (ResourceDictionary)Application.LoadComponent(resourceLocater);
            }

            return _sharedDictionary;
        }
    }
}

當您創建HostControl時,您添加資源字典執行控件:

ctrl.Resources.MergedDictionaries.Add(SharedDictionaryManager.SharedDictionary);

如果您有多個資源字典,則每個資源字典可以有一個這樣的屬性,或者您可以擁有一個屬性來加載所有資源字典,然后合並所有字典。

現在,應該自動選擇您需要的樣式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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