这节,我们来建立一个用户控件瞧一瞧
建立用户控件
以前,我都说过这么个事情,如果把所有的文件写在一个xaml文件中,这样一个页面就会变得特别的冗长。所以,我更加的喜欢吧flyouts定义成用户控件。注意用户控也是包含一个xmal设计文件和一个源代码文件。(我这里不会重点深入xaml的实质,但这部分的源码我会在这里展示出来)。为了更好的管理,我在项目中建立了一个相应的文件夹叫做Flyouts的文件夹,并且使用原始的用户控件的模板创建一个新用户控件叫做HomeZipCodeFlyout,相应的源代码如图所示:
1 <UserControl 2 x:Class="MetroGrocer.Flyouts.HomeZipCodeFlyout" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:MetroGrocer.Flyouts" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d" 9 d:DesignHeight="130" 10 d:DesignWidth="350"> 11 <!--Popup 这个弹出的对话框--> 12 <Popup x:Name="HomeZipCodePopup" 13 IsLightDismissEnabled="True" Width="350" Height="130" > 14 <!--布局控件 背景--> 15 <StackPanel Background="Black"> 16 <!--Border 边框控件--> 17 <Border Background="#85C54C" BorderThickness="4"> 18 <StackPanel> 19 <StackPanel Orientation="Horizontal" Margin="10"> 20 <TextBlock Style="{StaticResource PopupTextStyle}" 21 Text="Home Zip Code:" VerticalAlignment="Center" 22 Margin="0,0,10,0" /> 23 <TextBox Height="40" Width="150" FontSize="20" 24 Text="{Binding Path=HomeZipCode, Mode=TwoWay}" /> 25 </StackPanel> 26 <Button Click="OKButtonClick" HorizontalAlignment="Center" 27 Margin="10">OK</Button> 28 </StackPanel> 29 </Border> 30 </StackPanel> 31 </Popup> 32 </UserControl>
命名及规范,命名及知意。flyout的控件的作用就是允许用户更改ViewModel中的HomeZipCode属性的值,作用在这个项目中不是很大,但他保持了项目很好的扩展性。
说一说UserControl吧!他在项目中更多的是以的模板使用的,你定义xaml,是你要创建哪些元素在模板中。当你创建flyouts这个控件的时候,这内容是在Popup的里面。我的布据中是用文本框得到相应的输入,在控件中,用户点击某某按钮,能得到相应值,就是我们周围加了像这样各种各样的控件元素了。
我在popup元素中设置了3个非常非常重要属性,每个属性都粗体显示。这个IsLightDismissEnabled属性,意思是用户点击了popup以外的部分,这个popup控件是否消失了,默认值是真,为什么了,这样能够给用户很好的弹出对话框的体验。
至于宽度和高度这样的属性,还有什么好说的了,我必须要设置,并且要设置好,因为他要有足够的大小显示文字内容,至于这些属性怎么用于定位。后面的篇幅我会给予了说明。
特别提醒,只用运用了精确的高度和宽度,才能够使其popup控件定位。
哝——一个popup控件的界面已经做好了。