2015-02-10 35 views
3

我想自定义消息对话框,如图下图自定义的Windows Phone 8.1消息对话框

enter image description here

我怎样做,我已经准备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> 

回答

5

确切看你有没有标准的,如果你想要那个确切的东西,你需要编写一些自定义代码。如果重要部分是警报标题中的图标,那么使用ContentDialog可以非常容易。

MessageDialog不可定制,但ContentDialog是。有一个模板使用Add.New Item ...菜单添加一个新的ContentDialog到你的项目中。

一旦你有你ContentDialog文件,您可以自定义模板标题的“确定”按钮:

<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在标题模板标题一起。更高级的版本可以允许为不同的目的绑定不同的图标。你也可以填写一个路径,而不是绘制一个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。

0

在项目中创建一个UserControl。 将整个xaml代码放在Usercontrol中。 现在,您可以使用此用户控件作为弹出式窗口,无论您想使用它。

Popup msgpopup = new Popup(); 
msgpopup.child = new CustomisedMessageDialogControl(); //name of ur Usercontrol 

而且只需打开此对话框,

msgpopup.IsOpen = true; 
相关问题