使用Toast通知示例
前面我们使用了MessageDialog来作为弹窗,这里来介绍一个更加高大上的Toast通知。
Toast通知本质上动力是由XML来提供的,一开始我还不相信不知道XML原来有这么大的威力。现在就来看看和Toast相关的知识。
1)实例化ToastNotification类。
ToastNotification toast1 = new ToastNotification(xdoc);
2)使用ToastNotificationManager来管理Toast通知,包括添加、展示、移除、获取通知等等。
ToastNotificationManager.CreateToastNotifier().Show(toast1);
3)在第一步中的xdoc就是一段XML数据,它从何而来呢?
XmlDocument xdoc = new XmlDocument();
4)上一步代码实例化了一个XML,但是它没有数据呀,数据从哪来呢?
xdoc.LoadXml(txtXML.Text);
5)这段代码就将一段Text导入了XML中。而Text数据有很多种获取方式。在下文中自然会提到。
Toast的XML模板有许多,我们可以直接来获取它们。用枚举和强大的var即可。
var items = Enum.GetNames(typeof(ToastTemplateType));
那么就正式开工了,因为重复的属性太多了我就大概设置了2个Style资源。
<Page.Resources><Style TargetType=”TextBlock” x:Key=”StyleHeaderTextBlock”><=”40″/><=”华文琥珀”/><=”HotPink”/><=”12″/></Style><Style TargetType=”Button” x:Key=”StyleToastButton”><=”180″/><=”50″/><=”Aqua”/><=”21″/><=”12″/><=”显示Toast通知” /></Style></Page.Resources>
下面是第一部分用于生成Toast通知。
<StackPanel Orientation=”Vertical” Grid.Column=”0″ Margin=”12″><TextBlock Text=”生成Toast通知” Style=”{StaticResource StyleHeaderTextBlock}”/><StackPanel Orientation=”Horizontal” HorizontalAlignment=”Left”><TextBlock FontSize=”24″ Foreground=”Wheat” Text=”请选择一个模板:” VerticalAlignment=”Center”/><ComboBox Name=”comboBoxToast” Foreground=”Green” Width=”275″SelectionChanged=”comboBoxToast_SelectionChanged”/></StackPanel><TextBox Foreground=”Green” x:Name=”txtXML” HorizontalAlignment=”Left” Width=”500″ Height=”400″ Header=”模板XML:” TextWrapping=”Wrap” FontSize=”24″/><Button Name=”btnShowToast1″ Click=”btnShowToast1_Click” Style=”{StaticResource StyleToastButton}”/></StackPanel>
后台代码也蛮容易的,利用上面讲的就好了。
public MainPage(){this.InitializeComponent();var items = Enum.GetNames(typeof(ToastTemplateType));this.comboBoxToast.ItemsSource = items;}(object sender, SelectionChangedEventArgs e){string tempt = ((ComboBox)sender).SelectedItem as string;if (!string.IsNullOrEmpty(tempt)){ToastTemplateType template = (ToastTemplateType)Enum.Parse(typeof(ToastTemplateType), tempt);XmlDocument xdoc = ToastNotificationManager.GetTemplateContent(template);txtXML.Text = xdoc.GetXml();}}(object sender, RoutedEventArgs e){if (txtXML.Text == “”)return;XmlDocument xdoc = new XmlDocument();xdoc.LoadXml(txtXML.Text);ToastNotification toast1 = new ToastNotification(xdoc);ToastNotificationManager.CreateToastNotifier().Show(toast1);}
模板是这样用的……
在src中填入图片的路径也可以在Toast中显示图像哦,赶紧试试吧……
接下来是第二段啦,,和前面的很是类似……
============>ms-winsoundevent:Notification.Mail>ms-winsoundevent:Notification.Looping.Alarm>======”{StaticResource StyleToastButton}”/></StackPanel>
上面代码中的“ms-winsoundevent:Notification.Default”都是填到src中的用于设置声音,还可以在loop、silent中设置是否循环以及是否静音,那到底该怎么用呢?应该将这些属性全部都填入到XML中。
xmlContent = string.Format(“<toast duration='{0}’>” +”<visual>” +”<binding template=’ToastText01′>” +”<text id=’1′>{1}</text>” +”</binding>” +”</visual>” +”='{3}’ silent='{4}’/>” +”</toast>”,toastDuration, msg, audioSrc, isLoop, isSilent);
上面用的xmlContent也要先定义出来,一开始设置为Empty就好。
string xmlContent = string.Empty; 最有效的资本是我们的信誉,它24小时不停为我们工作。