从我的网易博客移过来的。。
先提供效果图吧。
这个是coding4Fun提供的MessagePrompt弹窗。还提供了ToastPrompt:土司弹出框,类似于土司推送通知。
AboutPrompt:说明弹出框,特点是弹出框会在屏幕中间,其他的弹出框是在屏幕的上方(其他可以通过Margin调整文位置)。
PasswordInputPrompt:密码输入弹出框。
InputPrompt:输入弹出框,用于弹出输入框输入其他的信息。
这些都不讨论了。需要的可以到官网文档:http://coding4fun.codeplex.com/wikipage?title=MessagePrompt&referringTitle=Documentation
或者到:http://coding4fun.codeplex.com/wikipage?title=MessagePrompt&referringTitle=Documentation了解。
今天讨论用MessagePrompt自定义自己的弹窗。弹窗可以带输入框等内容。
先新建一个window phone User Control。命名为BodyUserControl。这个主要是设计弹窗的内容。
添加代码:
<Border BorderBrush="YellowGreen" BorderThickness="2"> <StackPanel x:Name="LayoutRoot1" Background="{StaticResource PhoneChromeBrush}" Margin="0,0,0,10"> <TextBlock Text="Body declared in UserControl XAML" HorizontalAlignment="Center"/> <Image Source="/RoundBtnDemo;component/images/MB_0010_radio.png" Height="80" Width="80" HorizontalAlignment="Center"/> <TextBox x:Name="msg" /> <Border Background="YellowGreen" Height="100" Width="400"> <TextBlock x:Name="tx" Text="This is the first text in the Body section. Another Body content here" TextWrapping="Wrap" VerticalAlignment="Center"/> </Border> </StackPanel> </Border>
效果图为:
MessagePrompt msgPrompt = new MessagePrompt(); msgPrompt.Title = "UserControl test"; msgPrompt.Body = new BodyUserControl(); msgPrompt.IsAppBarVisible = false; msgPrompt.Completed += new EventHandler<PopUpEventArgs<string, PopUpResult>>(msgPrompt_Completed); msgPrompt.Show();
最重要的来了:怎么获取弹窗上的TextBox 的内容呢?
其实是在那个Completed事件可以获取:
void msgPrompt_Completed(object sender, PopUpEventArgs<string, PopUpResult> e) { if (e.PopUpResult == PopUpResult.Ok)//先判断是否是点击那个勾,也就是确定 { var msgPrompt = sender as MessagePrompt;//把sender转为MessagePrompt对象 var bodyControl = msgPrompt.Body as BodyUserControl;//取出BodyUserControl对象 //取出BodyUserControl中Name为msg,也就是那个TextBox。 //这里的Showmsg是一个TextBlock,这样,就能取到弹窗上的控件的值 ShowMsg.Text = bodyControl.msg.Text; } }