WPF Grid - 如何只为一列应用样式?

标签 wpf grid

我有一个包含许多行和列的 WPF 网格,所有行和列都包含诸如 TextBlocks 和 TextBoxes 之类的内容。

对于这种特定情况,我希望第 1 列中的所有内容都有填充,并且第 2 列中的所有内容都正确对齐。必须在网格中的每个项目上设置这些属性似乎非常非 WPF。

我知道我可以通过执行以下操作为网格中的所有 TextBlock 创建样式:

<Grid>
  <Grid.Resources>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="HorizontalAlignment" Value="Right"/>
    </Style>
  </Grid.Resources>
</Grid>

但是有没有办法将该样式仅应用于第 2 列中的控件?

我应该使用不同的控件吗?

最佳答案

这是我通常做的:

<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource {x:Type TextBlock}}">
    <Style.Triggers>
        <Trigger Property="Grid.Column" Value="0">
            <Setter Property="Margin" Value="0,0,2,0" />
        </Trigger>

        <Trigger Property="Grid.Column" Value="2">
            <Setter Property="Margin" Value="20,0,2,0" />
        </Trigger>
    </Style.Triggers>
</Style>

关于WPF Grid - 如何只为一列应用样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/851511/

相关文章:

c# - WPF 链绑定(bind)

c# - 由于布局影响,打开 WPF 窗口速度很慢

wpf - 在WPF中,如何实现一个文件上传控件(文本框和一个浏览文件的按钮)?

image - 使用 extjs 在网格中显示图像

python - Tk 网格无法正确调整大小

c# - 如何将文本放在 RadioButton 的顶部

c# - WPF 绑定(bind) View 模型

WPF Canvas 和网格叠加

Android:在 gridlayout 或 gridview 中创建具有动态大小的网格

hadoop - PIG - 将字符串连接到参数?