合理创建XAML标记以提高可读性和健全性

时间:2015-01-03 18:19:51

标签: wpf xaml controltemplate

免责声明:不确定标题中的内容是否清楚,因为要使用的词语是我尚未知道的那些词语。随意纠正。

想象一下GUI由4x3输入组成的场景,其中每个输入都包含一个标签和一个文本框。目前,它是通过明确声明所有组件并且每个组件具有以下内容来完成的。

<Label x:Name="Label1"
       Content="Text1" 
       HorizontalAlignment="Left"
       VerticalAlignment="Top"
       Margin="10,210,0,0" />
<TextBox x:Name="TextBox1"
         HorizontalAlignment="Left" 
         VerticalAlignment="Top"
         Width="120"
         Height="23" Margin="10,241,0,0" 
         TextWrapping="Wrap" Text="TextBox" />

是否有一种推荐的方法来生成那些来自“其他东西”的东西,比如模板或其他东西,它控制着它中的所有常见属性,消除了我一次又一次地输入它们的需要(好吧,那些是自动生成但仍然......)?对齐和尺寸很繁琐......

至于边距,或许有布局功能?我用谷歌搜索了它,但是我得到的与XAML有关的点击要么是可疑的怪异,要么依赖于代码。是这样的方式还是可以直接从XAML开始?

2 个答案:

答案 0 :(得分:0)

您指的是WPF“Style”。对于样式,您可以定义一组属性,这些属性在使用该样式的控件的所有实例之间都是相同的。

<Style x:Key="MyTextBoxStyle" TargetType="TextBox">
    <Setter Property="Width" Value="120" />
    <Setter Property="Height" Value="23" />
    <Setter Property="TextWrapping" Value="Wrap" />
    <!-- etc... -->
</Style>

<!-- This textbox will default its property values to those defined above -->
<TextBox Style="{StaticResource MyTextBoxStyle}" />

答案 1 :(得分:0)

要正确配置布局,您应该使用WPF Layout Controls。为了制作网格布局,您可以根据需要使用GridUniformGrid等。

为了将多个属性应用于布局控件中的所有控件,您可以在该控件的Resources中定义Style,如前所述:

<Grid>
    <Grid.Resources>
        <Style TargetType="TextBox">
            <Setter Property="Width" Value="120" />
            <Setter Property="Height" Value="25" />
            <!-- etc... -->
        </Style>
    </Grid.Resources>
    <Grid.RowDefinitions>
        <!-- Row definitions here. -->
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <!-- Column definitions here. -->
    </Grid.ColumnDefinitions>

    <!-- controls ... -->

    <TextBox Text="{Binding YourProperty}"
             Grid.Row="1"
             Grid.Column="2"
             />

    <!-- controls ... -->

</Grid>

此处样式将应用于所有TextBox's控件。