如何设置按钮的样式?我使用Xceed.wpf.toolkit
Xceed.Wpf.Toolkit.MessageBox mbox = new Xceed.Wpf.Toolkit.MessageBox();
System.Windows.Style style = new System.Windows.Style(typeof(System.Windows.Controls.Button));
style.Setters.Add( new System.Windows.Setter(System.Windows.Controls.Button.ForegroundProperty, Brushes.DarkGreen));
mbox.OkButtonStyle = style;
我收到错误
System.Windows.Markup.XamlParseException: ''System.Drawing.SolidBrush' is not a valid value for the 'System.Windows.Documents.TextElement.Foreground' property on a Setter.'
答案 0 :(得分:4)
请务必使用WPF库,而不是WindowsForms或GDI + ...
您应该使用的内容:System.Windows.Media.Brushes
包含DarkGreen
System.Windows.Media.SolidColorBrush
(在PresentationCore.dll中)。
您目前使用的是System.Drawing.Brushes
和System.Drawing.SolidBrush
。
答案 1 :(得分:2)
TextElement.Foreground
is of type System.Windows.Media.Brush
。那是"数据类型"。您必须为其分配该类型的值或该类型的某个子类。
System.Drawing.Brushes.DarkGreen
的类型为System.Drawing.Brush
,它不是System.Windows.Media.Brushes
的子类。这是来自Windows Forms或其他东西,而不是WPF。您需要使用WPF画笔对象进行WPF控件。
摆脱C#文件顶部的using System.Drawing;
。在一个WPF项目中,除了麻烦之外别无他法。请改用System.Windows.Media.Brushes.DarkGreen
。
style.Setters.Add( new System.Windows.Setter(System.Windows.Controls.Button.ForegroundProperty,
System.Windows.Media.Brushes.DarkGreen));
您还可以将样式创建为XAML资源,并使用FindResource()
加载它。那么你只需说" DarkGreen"让XAML解析器担心要创建什么样的画笔:
<Style
x:Key="XCeedMBoxButtonStyle"
TargetType="{x:Type Button}"
BasedOn="{StaticResource {x:Type Button}}"
>
<Setter Property="TextElement.Foreground" Value="DarkGreen" />
</Style>
C#
var style = FindResource("XCeedMBoxButtonStyle") as Style;
但是你必须担心在可以找到它的地方定义它,如果你只使用正确的Brush类,那么你所做的事情无论如何都会正常工作。
令人遗憾的是,我们在多个.NET名称空间中有多个名为Brush
的类,其中包含无法提供的名称,例如&#34; System.Windows.Media&#34; vs&#34; System.Drawing&#34;,但不幸的是,它只是那种方式增长。