【发布时间】:2012-05-07 03:02:25
【问题描述】:
我正在尝试创建一个使用皮肤/主题(可供用户选择的不同颜色托盘)的应用。
我定义了一个SolidColorBrush 属性
public class ThemeManager
{
public SolidColorBrush ForeBrush { get; set; }
public ThemeManager()
{
ForeBrush = new SolidColorBrush(Colors.Black);
}
public void SetTheme()
{
ForeBrush.Color = Colors.Red;
}
}
并在 XAML 中绑定它
<TextBlock Foreground="{Binding ForeBrush,Source={StaticResource Theme}}" />
我在 App.xaml 中声明了 Theme 资源
<local:ThemeManager x:Key="Theme" />
问题是当我制作这样的样式时:
<Style x:Key="TextBlockStyle1" TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding ForeBrush,Source={StaticResource Theme}}" />
</Style>
如果我将它放在Page.Resources 中,这将有效,但如果我将它放在资源字典中(并将其添加到 App.xaml),则应用程序崩溃(App.g.i.cs 中的 Debugger.Break())。
这似乎只在使用 Setter 时发生。
我在这里做错了什么?
编辑: 将样式放在资源字典文件中并在 app.xaml 中引用它
【问题讨论】:
-
此代码适用于我的带有 .Net 4.0 的 PC。您使用的是哪个版本的 .NET?
-
@Klaus78 我已经在 .Net 5(地铁风格的应用程序)和 wpf .Net 4.0 中测试了代码。您是否在字典中添加样式并在 app.xaml 中引用它?
标签: wpf xaml binding microsoft-metro resourcedictionary