2016-09-23 44 views
0

在我的Bootstrapper應用程序中,我使用自己的消息框。此消息框需要樣式,它存在於dll中。對於其他視圖(xaml)將其添加爲ResourceDictionary,如:如何在Bootstrapper應用程序中添加ResourceDictionary

<UserControl.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/MyApp;component/MyStyle.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</UserControl.Resources> 

或一般的任何C#應用程序app.xaml其中,這種風格可以添加和它的作品。對於Bootstrapper,我無法添加app.xaml或提供此ResourceDictionary。任何指針?

回答

0

在將資源詞典添加到應用程序資源之前,您必須先做兩件事。由於本機引導程序正在託管我們的WPF窗口,因此不會自動應用程序設置。這可以通過簡單地創建System.Windows.Application的實例來完成。其次你必須設置Application.ResourceAssembly。完成這兩個步驟後,您可以使用Application.Current.Resources訪問應用程序資源。爲了完整全Codesample:

public class CustomBootstrapper : BootstrapperApplication 
{ 
    protected override void Run() 
    { 
     if (Application.Current == null) 
     { 
      new Application(); 
     } 
     if (Application.ResourceAssembly == null) 
     { 
      var assembly = typeof(CustomBootstrapper).Assembly; 
      Application.ResourceAssembly = assembly; 
     } 
     var myStyle = (ResourceDictionary)Application.LoadComponent(new Uri("/styling/MyStyle.xaml", UriKind.Relative)); 
     Application.Current.Resources.MergedDictionaries.Add(myStyle); 
     var view = new MainWindow(); 
     view.Show(); 
    } 
} 

我希望這回答了你的問題

相關問題