Bindung Set-Wert in einem Stil, der in einem resource dictionary
Ich versuche, eine app erstellen, die mithilfe von skins/themes (verschiedene Farb-Paletten verwenden, wählen können).
Definiere ich eine SolidColorBrush
Eigenschaft
public class ThemeManager
{
public SolidColorBrush ForeBrush { get; set; }
public ThemeManager()
{
ForeBrush = new SolidColorBrush(Colors.Black);
}
public void SetTheme()
{
ForeBrush.Color = Colors.Red;
}
}
und binden Sie es in XAML
<TextBlock Foreground="{Binding ForeBrush,Source={StaticResource Theme}}" />
Ich erkläre das Thema Ressource in der App.xaml
<local:ThemeManager x:Key="Theme" />
Das problem ist, wenn ich einen style wie:
<Style x:Key="TextBlockStyle1" TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding ForeBrush,Source={StaticResource Theme}}" />
</Style>
Dies funktioniert wenn ich es in Page.Resources
, aber wenn ich es in einem Resource Dictionary (und fügen Sie Sie zu App.xaml) die app stürzt ( Debugger.Pause() im App.g.ich.cs).
Dies scheint nur zu passieren, wenn mit einem Setter.
Was mache ich hier falsch?
BEARBEITEN:
platzieren Sie den Stil in einem Resource Dictionary-Datei und verweisen auf die in-app.xaml
Dieser code funktioniert auf meinem PC .Net 4.0. Welche version von .NETZ verwenden Sie?
Getestet hab ich den code sowohl in .Net 5 (metro-style-app) und wpf .Net 4.0. Haben Sie fügen den Stil in einem Wörterbuch nach und referenziert es in der app.xaml ?
Getestet hab ich den code sowohl in .Net 5 (metro-style-app) und wpf .Net 4.0. Haben Sie fügen den Stil in einem Wörterbuch nach und referenziert es in der app.xaml ?
InformationsquelleAutor Lescai Ionel | 2012-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit diesem code funktioniert es auf meinem PC (mit .NET 4.0)
Hier ist das Wörterbuch
Hier ist die Referenz in XAML
Wenn Sie schreiben,
Dann erhalten Sie eine Fehlermeldung, weil, wie die zusammengeführten Ressourcen-dictionary arbeitet.
Nach MSDN
Dies bedeutet, dass in Dictionary1.xaml ist es nicht möglich zu sehen, eine definierte Ressource in der App.XAML
Ich bearbeitet meine Antwort
Super!!! Hinzufügen der theme manager zu trennen resource dictionary und dann verschmelzen Sie in der app.xaml löst alles. Dank
InformationsquelleAutor Klaus78