合理创建 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 控件。
免责声明:不确定在标题中放置什么以明确说明,因为要使用的词是我(还)不知道并正在询问的词。欢迎指正。
想象一个 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 控件。