【发布时间】:2013-08-13 04:49:11
【问题描述】:
我试图允许用户自定义 WPF 应用程序中的元素。我想要实现的是,如果我有一个指定所有表单元素(文本框、标签等)的列表框,用户可以选择一个表单元素,并将样式属性设置为标签,前景应该是橙色的TextBox 前景应该是黑色的等等。根据我打算应用的任何样式,所有文本框都应该看起来相似。
我无法找到实现这一目标的方法。我已经尝试了一个可以在运行时上传多个预定义样式的示例。所以现在,我想找到一种在运行时改变不同元素属性的方法。
UPDATE:
我试图从后面的代码中创建一个新样式。
XAML
<Label Content="SAMPLE" Style="{DynamicResource Style1}" x:Name="label1" />
<Button Content="Button" Click="Button_Click" />
在后面的代码中,即单击按钮时,我尝试了这个:
Style style = new Style { TargetType = typeof(Label) };
style.Setters.Add(new Setter(Control.ForegroundProperty, Brushes.Black));
Application.Current.Resources["Style1"] = style;
但它没有得到更新。
谢谢。
【问题讨论】:
-
来自 MSDN:一旦应用了样式,它就会被密封并且无法更改。如果要动态更改已应用的样式,则必须创建新样式来替换现有样式。
-
你认为这行
Application.Current.Resources["Style1"] = style;将取代你在 XAML 中写的Style吗? -
这是我从stackoverflow.com/questions/10345166/…尝试的解决方案