2010-10-21 87 views
1

我有一個自定義控制庫(前。MyCustomControls.dll)是一個插件,第三方應用程序。它作爲類庫輸出,並在運行時由第三方應用程序調用。我的問題是我爲各種用戶控件(如listviewitem)定義的自定義樣式,textblock現在無法在應用程序級別加載。加載自定義樣式控件庫

如何添加我的自定義樣式的資源查找層次,使得在庫中的所有控件都將使用我的自定義樣式?

例如,如果我定義下面的風格,在MyCustomControls.dll所有控件不會看到它在創建時。但是,如果將MyCustomControls.dll添加到應用程序並將其加載到應用程序資源中,則會應用樣式。

注:第三方應用程序是不是一個WPF應用程序。 Application.Current在運行時返回null。

回答

1

如果您沒有訪問第三方應用程序,如果它不是一個WPF應用程序(它是Silverlight的?),你不能注入你的風格寫在XAML的WPF。此外,只有第三方應用程序纔會知道如何在以後應用皮膚。我想,如果這不是你的應用程序,你可以做的唯一事情就是遵循「製造商的說明」。

僅供參考: 如果你擁有兩面 - 主要的應用程序和資源,以插電,你可以使用MergeDictionaries合併資源DLL中爲了訪問資源的DLL,你需要使用包URI語法。 事情是這樣的:

在App.xaml中:

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/YOUR_DLL;component/SUBFOLDER/YOURCUSTOMSTYLES.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

在這些場景中,讓您的資源等同於那些主要的應用程序期待的關鍵是很重要的。這是因爲典型的蒙皮機制是在使用資源時使用DynamicResource,因此每次使用時都會用「鍵」查找它們。如果您使用相同的密鑰,例如替換爲另一個現有的資源,切換一個名爲「ButtonBackground」到黃河資源,和應用程序動態使用該資源在整個應用程序的按鈕的背景下,所有的按鈕應該成爲黃。

+0

感謝您的答覆。第三方應用程序不是WPF應用程序,我無法控制它。編輯的問題來反映這一點。 – user173884 2010-10-22 15:34:14

+0

我已經更新了我的答案。不幸的是,沒有辦法找到如何在第三方應用程序中注入資源,特別是非WPF和非Silverlight應用程序。 – 2010-10-22 16:56:12