合理创建 XAML 标记以提高可读性和完整性

Rational creation of XAML markup for readibility and sanity

免责声明:不确定在标题中放置什么以明确说明,因为要使用的词是我(还)不知道并正在询问的词。欢迎指正。

想象一个 GUI 由 4x3 输入组成的场景,其中每个输入都由一个标签和一个文本框组成。目前,它是通过显式声明所有组件来完成的,每个组件都有如下的for。

<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" />

有没有推荐的方法从 "something else" 生成那些,比如模板之类的,它控制着其中的所有公共属性,消除了我一遍又一遍地输入它们的需要(好吧,那些是自动生成的但仍然......)?对齐方式和大小都很乏味...

至于边距,也许有布局功能?我用谷歌搜索了它,但我得到的与 XAML 相关的点击要么很奇怪,要么依赖于背后的代码。这是要走的路还是可以直接从 XAML 开始?

您指的是 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}" />

要正确配置您的布局,您应该根据需要使用 WPF Layout Controls. In order to make the grid layout, you can use Grid, UniformGrid 等。

为了将多个属性应用于布局控件内的所有控件,您可以在该控件的 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 控件。