2017-03-14 62 views
1

我的WPF應用程序有幾個窗口,我想爲它們使用相同的背景圖像。我已經在資源字典中定義了位圖和圖像畫筆,如下所示。從資源字典中使用WPF背景

<BitmapImage x:Key="BackgroundImage" UriSource="/Resources/BackPlate.png"/> 
<ImageBrush x:Key="BackgroundBrush" ImageSource="{StaticResource BackgroundImage}" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,128,128"/> 

當我設置背景屬性的畫面描述,背景成功改變在Visual Studio中,但是當我運行應用程序,我得到一個解析例外,我想是因爲窗口資源不算真正到過還沒有讀過?

<Window x:Class="MyApp.Test" 
... 
    Background="{StaticResource BackgroundBrush}"> 
<Window.Resources> 
... 

是否有另一種方式來指定資源讀取後的背景?我試過Window.Background的方法,但我無法弄清楚如何讓它在沒有指定整個圖像畫筆定義的情況下工作。

<Window.Background> 
    <ImageBrush ?> 
</Window.Background> 

有沒有一種方法來指定使用這種方法引用圖像畫筆?

+0

你有沒有試過[樣式模板(https://msdn.microsoft.com/en-us/library/aa969824 (v = vs.110).aspx)並添加背景以繼承到每個實例?你得到的例外是什麼? –

+0

異常是「在PresentationFramework.dll中發生類型'System.Windows.Markup.XamlParseException'的第一次機會異常 其他信息:'在'System.Windows.StaticResourceExtension'上提供值引發異常。'行號「5」和行位置「35」。「 – user7134019

回答

1

它應該工作的前提是你合併ResourceDictionary到您App.xaml文件:

<Application x:Class="WpfApp1.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="clr-namespace:WpfApp1" 
      StartupUri="MainWindow.xaml"> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="YourResourceDictionary.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 
+0

這個技巧。謝謝! – user7134019