自定义 Windows Phone 8.1 消息对话框
Customize Windows Phone 8.1 message dialog
我想自定义我的消息对话框,如下图所示
如何执行我为此 xaml 准备的
<StackPanel Name="rootStackPanel" Height="Auto" Background="#363636" VerticalAlignment="Top">
<StackPanel Margin="10">
<StackPanel Margin="0,0,0,10" Orientation="Horizontal">
<TextBlock x:Name="HeadingText" x:FieldModifier="public" Style="{StaticResource ApplicationMessageBoxHeadingStyle}" Text="Alert" />
<Image Margin="10,05,0,0" Source="/Assets/Images/alert.png" Width="35"></Image>
</StackPanel>
<TextBlock x:FieldModifier="public" x:Name="ContentText" Style="{StaticResource ApplicationMessageBoxErrorStyle}" Text="Pease enter a valid plate number" />
<Button x:FieldModifier="public" Name="OkButton" Margin="0,20,0,0" Padding="0" HorizontalAlignment="Left" Content="Ok" Style="{StaticResource ApplicationThemeButtonStyle}"/>
</StackPanel>
</StackPanel>
您所拥有的确切外观是 non-standard,如果您想要完全一样的东西,则需要编写一些自定义代码。如果重要的部分是警报标题中的图标,那么使用 ContentDialog 就很容易了。
MessageDialog 不可自定义,但 ContentDialog 可以。有一个模板可以使用 Add.New Item... 菜单向您的项目添加新的 ContentDialog。
获得 ContentDialog 文件后,您可以自定义模板为其按钮添加标题 "OK":
<ContentDialog
x:Class="MyApp.AlertDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Alert"
PrimaryButtonText="OK"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
>
并在标题模板中包含您的 alert.png 和标题。更高级的版本将允许为不同的图标绑定不同的图标 purposes.You 也可以填充路径而不是绘制 png,这样图标将更容易缩放。
<ContentDialog.TitleTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" Foreground="{ThemeResource PhoneAccentBrush}"/>
<Image Source="/Assets/Images/alert.png" />
</StackPanel>
</DataTemplate>
</ContentDialog.TitleTemplate>
然后在ContentDialog的Xaml中包含其余内容:
<StackPanel>
<TextBlock x:FieldModifier="public" x:Name="ContentText" Style="{StaticResource ApplicationMessageBoxErrorStyle}" Text="Pease enter a valid plate number" />
</StackPanel>
这会将“确定”按钮放在右下角的标准位置。如果您想将它包含在文本中,您可以像在示例代码中一样将它粘贴在 StackPanel 中,而不是在 ContentDialog 上设置 PrimaryButtonText。
在项目中创建一个Usercontrol。
将整个 xaml 代码放在用户控件中。
现在您可以将此 Usercontrol 用作弹出式窗口,无论您在哪里使用它。
Popup msgpopup = new Popup( );
msgpopup.child = new CustomisedMessageDialogControl(); //name of ur Usercontrol
并简单地打开这个对话框,
msgpopup.IsOpen = true;
我想自定义我的消息对话框,如下图所示
如何执行我为此 xaml 准备的
<StackPanel Name="rootStackPanel" Height="Auto" Background="#363636" VerticalAlignment="Top">
<StackPanel Margin="10">
<StackPanel Margin="0,0,0,10" Orientation="Horizontal">
<TextBlock x:Name="HeadingText" x:FieldModifier="public" Style="{StaticResource ApplicationMessageBoxHeadingStyle}" Text="Alert" />
<Image Margin="10,05,0,0" Source="/Assets/Images/alert.png" Width="35"></Image>
</StackPanel>
<TextBlock x:FieldModifier="public" x:Name="ContentText" Style="{StaticResource ApplicationMessageBoxErrorStyle}" Text="Pease enter a valid plate number" />
<Button x:FieldModifier="public" Name="OkButton" Margin="0,20,0,0" Padding="0" HorizontalAlignment="Left" Content="Ok" Style="{StaticResource ApplicationThemeButtonStyle}"/>
</StackPanel>
</StackPanel>
您所拥有的确切外观是 non-standard,如果您想要完全一样的东西,则需要编写一些自定义代码。如果重要的部分是警报标题中的图标,那么使用 ContentDialog 就很容易了。
MessageDialog 不可自定义,但 ContentDialog 可以。有一个模板可以使用 Add.New Item... 菜单向您的项目添加新的 ContentDialog。
获得 ContentDialog 文件后,您可以自定义模板为其按钮添加标题 "OK":
<ContentDialog
x:Class="MyApp.AlertDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="Alert"
PrimaryButtonText="OK"
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
>
并在标题模板中包含您的 alert.png 和标题。更高级的版本将允许为不同的图标绑定不同的图标 purposes.You 也可以填充路径而不是绘制 png,这样图标将更容易缩放。
<ContentDialog.TitleTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" Foreground="{ThemeResource PhoneAccentBrush}"/>
<Image Source="/Assets/Images/alert.png" />
</StackPanel>
</DataTemplate>
</ContentDialog.TitleTemplate>
然后在ContentDialog的Xaml中包含其余内容:
<StackPanel>
<TextBlock x:FieldModifier="public" x:Name="ContentText" Style="{StaticResource ApplicationMessageBoxErrorStyle}" Text="Pease enter a valid plate number" />
</StackPanel>
这会将“确定”按钮放在右下角的标准位置。如果您想将它包含在文本中,您可以像在示例代码中一样将它粘贴在 StackPanel 中,而不是在 ContentDialog 上设置 PrimaryButtonText。
在项目中创建一个Usercontrol。 将整个 xaml 代码放在用户控件中。 现在您可以将此 Usercontrol 用作弹出式窗口,无论您在哪里使用它。
Popup msgpopup = new Popup( );
msgpopup.child = new CustomisedMessageDialogControl(); //name of ur Usercontrol
并简单地打开这个对话框,
msgpopup.IsOpen = true;