2017-03-14 5 views
1

Meine WPF-Anwendung verfügt über mehrere Fenster, und ich möchte das gleiche Hintergrundbild für alle von ihnen verwenden. Ich habe den Bitmap- und Bildpinsel in einem Ressourcenwörterbuch wie folgt definiert.Verwenden von WPF-Hintergrund aus Ressource-Wörterbuch

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

Wenn ich die Hintergrundeigenschaft im Fenster Beschreibung festgelegt, ändert sich der Hintergrund erfolgreich in Visual Studio, aber wenn ich die Anwendung ausführen, ich ein Parsing Ausnahme erhalten, gehe ich davon aus, weil die Fenster Ressourcen tatsächlich nicht gewesen lesen Sie schon?

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

Gibt es eine andere Möglichkeit, den Hintergrund anzugeben, nachdem die Ressourcen gelesen wurden? Ich habe versucht, den Window.Background-Ansatz, aber ich kann nicht herausfinden, wie es funktioniert, ohne Angabe der gesamten Bildpinseldefinition.

Gibt es eine Möglichkeit, den Bildpinsel per Referenz anzugeben, wenn dieser Ansatz verwendet wird?

+0

Haben Sie versucht, eine [Stilvorlage] (https://msdn.microsoft.com/en-us/library/aa969824 (v = vs.110) .aspx) mit dem hinzugefügten Hintergrund, der an jede Instanz vererbt wird? Was ist die Ausnahme, die du bekommst? –

+0

Die Ausnahme ist "Eine erste Chance Ausnahme des Typs 'System.Windows.Markup.XamlParseException' aufgetreten in PresentationFramework.dll Zusätzliche Informationen: 'Wert auf' System.Windows.StaticResourceExtension 'eine Ausnahme ausgelöst.' Zeilennummer '5' und Zeilenposition '35'. " – user7134019

Antwort

1

Es sollte funktionieren, vorausgesetzt, dass Sie die ResourceDictionary in Ihre App.xaml Datei zusammenführen:

<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

Das hat den Trick gemacht. Vielen Dank! – user7134019

Verwandte Themen