前些天买了园子里林政老师的两本 WP8.1 的书籍。毕竟想要学得深入的话,还是得弄本书跟着前辈走的。
今天读到 1.4.3 节——框架的应用示例:自定义弹出窗口这一小节。总的来说,就是弄一个像 MessageDialog 的,但是又要具有能定义 Dialog 内的按钮、文本等等的功能(例如颜色、字体大小这些)。(先不说 ContentDialog ,即内容对话框能大部分做到)
原理是使用了一个 Popup 控件作为弹出窗口的容器,将 Popup 的 Child 属性赋值为弹出窗口的实例。在书中,弹出窗口的类为模板化控件,名叫 MyMessage,Template 包含了一个 Grid,然后 Grid 中又包含了一个 Rectangle 和一个 Border,Rectangle 用作半透明处理(相当于 Web 中模态窗口的背景部分半透明灰黑色),Border 里套了一个 StackPanel,StackPanel 里存放弹出窗口的内容。(感觉这个 StackPanel 完全是多余的)
效果(480*800中):
各层的解释:
相应的代码:
1 <ControlTemplate TargetType="local:MyMessage"> 2 <Grid VerticalAlignment="Stretch"> 3 <Rectangle x:Name="backgroundRect" Grid.Row="0" Fill="Black" Opacity="0.7"/> 4 <Border 5 VerticalAlignment="Top" 6 BorderThickness="3" 7 BorderBrush="Black"> 8 <StackPanel Margin="0"> 9 <ContentPresenter x:Name="body"/> 10 </StackPanel> 11 </Border> 12 </Grid> 13 </ControlTemplate>