Windows Phone 8.1中ContentDialog的边框

时间:2015-09-06 10:18:10

标签: c# xaml windows-phone-8.1

我正在开发Windows Phone 8.1(Windows RT应用程序)的应用程序。 我想展示一个带有白色边框的ContentDialog,我可以看到对话框,但我无法看到任何边框。 我已经为它定义了我自己的xaml,因为我经常使用这个对话框,我想在一个地方有共同的设置。 这是XAML:

<ContentDialog
    x:Class="MyNamespace.MyDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Margin="10,330,10,0"
    Height="200"
    Width="340"
    Padding="10"
    Background="Black"
    BorderBrush="White" 
    BorderThickness="10">
</ContentDialog>

我在代码(c#)中使用它,如下所示:

mPopup = new MyDialog()
{
    Title = "",
    Content = "Hello World",
    PrimaryButtonText = "OK",
    IsSecondaryButtonEnabled = false,
};
mPopup.ShowAsync();

我也试过从cs设置边框属性,但没有任何运气。 根据MSDN文档,您可以为ContentDialog指定BorderBrush和BorderThickness。 我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

ContentDialog类扩展ContentControl,因此包含属性BorderBrushBorderThickness,但在显示时会被忽略。

要创建边框,您需要指定具有边框的自定义内容,例如Border元素,其中TextBlock为其子元素:

var mPopup = new ContentDialog()
{
    Title = "",
    PrimaryButtonText = "OK",
    IsSecondaryButtonEnabled = false,
    Content = new Border()
    {
        HorizontalAlignment = HorizontalAlignment.Stretch,
        BorderThickness = new Thickness(10),
        BorderBrush = new SolidColorBrush(Colors.White),
        Child = new TextBlock()
        {
            Text = "Hello World",
            FontSize = 20,
            Foreground = new SolidColorBrush(Colors.White),
            HorizontalAlignment = HorizontalAlignment.Left,
            VerticalAlignment = VerticalAlignment.Top
        }
    }
};

mPopup.ShowAsync();