有没有办法在WindowsMhone 8 Toolkit的CustomMessageBox中定义不同的前景色?

时间:2013-12-16 15:13:28

标签: c# xaml windows-phone-8 messagebox windows-phone-toolkit

我想知道,是否可以更精确地从Windows Phone 8 Toolkit设置CustomMessageBox样式?

在这种情况下,我想为标题和实际的消息/按钮文本/边框设置不同的前景色。

我也可以在XAML中定义Box吗?

1 个答案:

答案 0 :(得分:2)

不应该付出太多努力。您所要做的就是子类CustomMessageBox,为单独的前景色添加依赖项属性,然后修改默认控件模板。 (您将看到默认模板对标题,标题,消息和按钮使用相同的Foreground属性。)

举个例子,我们来看标题颜色。首先添加一个依赖属性:

public class ExtendedCustomMessageBox : CustomMessageBox
{
    public Brush TitleForeground
    {
        get { return (Brush)GetValue(TitleForegroundProperty); }
        set { SetValue(TitleForegroundProperty, value); }
    }
    public static readonly DependencyProperty TitleForegroundProperty =
        DependencyProperty.Register("TitleForeground", typeof(Brush), typeof(ExtendedCustomMessageBox), null);

    public CustomMessage()
        : base()
    {
        DefaultStyleKey = typeof(CustomMessageBox);
    }
}

现在修改控件模板的相应部分。使用TemplateBinding引用新属性:

<TextBlock 
    x:Name="TitleTextBlock"
    Text="{TemplateBinding Title}" 
    Foreground="{TemplateBinding TitleForeground}"
    Visibility="Collapsed"
    Margin="24,16,24,-6"
    FontFamily="{StaticResource PhoneFontFamilySemiBold}"/>

(请注意,您可以在文件Themes\Generic.xaml中的WP8工具包下载中找到完整的控件模板。只需复制粘贴到项目的资源中,然后进行修改。)