Wpf 如何制作ListView单元格';让我们继承它';是否与列标题的文本对齐方式匹配?

Wpf 如何制作ListView单元格';让我们继承它';是否与列标题的文本对齐方式匹配?,wpf,listview,Wpf,Listview,我使用的是带有GridView的ListView视图。我正在单元格模板中使用文本块。我希望文本对齐方式与列标题相匹配——我想这涉及到使用FindAncestor进行某种绑定,但我不太确定如何实现这一点。我可能会将文本块与其他内容一起包装到自定义控件中,我希望在自定义控件中包含继承行为,这样我就不必重复它了 <GridViewColumn Width="140" Header="Creator"> <GridViewColumn.HeaderContainerStyle>

我使用的是带有GridView的ListView视图。我正在单元格模板中使用文本块。我希望文本对齐方式与列标题相匹配——我想这涉及到使用FindAncestor进行某种绑定,但我不太确定如何实现这一点。我可能会将文本块与其他内容一起包装到自定义控件中,我希望在自定义控件中包含继承行为,这样我就不必重复它了

<GridViewColumn Width="140" Header="Creator">
  <GridViewColumn.HeaderContainerStyle>
    <Style TargetType="{x:Type GridViewColumnHeader}">
       <Setter Property="TextElement.FontSize" Value="11" />
       <Setter Property="HorizontalContentAlignment" Value="Right"/>
       <Setter Property="Height" Value="16" />
    </Style>
  </GridViewColumn.HeaderContainerStyle>
  <GridViewColumn.CellTemplate>
    <DataTemplate>
      <TextBlock Margin="-6, 0" TextAlignment="{Binding ??}" Text="{Binding Creator}"/>
    </DataTemplate>
 </GridViewColumn.CellTemplate>
<GridViewColumn>

您必须将标头和CellTemplate ContentAlignment设置为Stretch,这样会占用更多空间

然后可以将TextAligment设置为资源并引用它

例如:

 <Window.Resources>
    <Style TargetType="ListViewItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
    <Style TargetType="GridViewColumnHeader">
      <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
    </Style>
    <TextAlignment x:Key="myTextAlignment">Right</TextAlignment>
  </Window.Resources>

  <ListView>
      <ListViewItem>Value1</ListViewItem>
      <ListViewItem>Value2</ListViewItem>
      <ListViewItem>Value3</ListViewItem>
      <ListViewItem>Value4</ListViewItem>

      <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="Creator">
            <GridViewColumn.HeaderTemplate>
              <DataTemplate>
                <TextBlock Text="Header" TextAlignment="{StaticResource myTextAlignment}"></TextBlock>
              </DataTemplate>
            </GridViewColumn.HeaderTemplate>
            <GridViewColumn.CellTemplate>
              <DataTemplate>
              <TextBlock TextAlignment="{StaticResource myTextAlignment}" Text="{Binding}"/>
              </DataTemplate>
            </GridViewColumn.CellTemplate>
          </GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>

正当
价值1
价值2
价值3
价值4

您必须将标头和CellTemplate ContentAlignment设置为Stretch,这样会占用更多空间

然后可以将TextAligment设置为资源并引用它

例如:

 <Window.Resources>
    <Style TargetType="ListViewItem">
      <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
    <Style TargetType="GridViewColumnHeader">
      <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter>
    </Style>
    <TextAlignment x:Key="myTextAlignment">Right</TextAlignment>
  </Window.Resources>

  <ListView>
      <ListViewItem>Value1</ListViewItem>
      <ListViewItem>Value2</ListViewItem>
      <ListViewItem>Value3</ListViewItem>
      <ListViewItem>Value4</ListViewItem>

      <ListView.View>
        <GridView>
            <GridViewColumn Width="100" Header="Creator">
            <GridViewColumn.HeaderTemplate>
              <DataTemplate>
                <TextBlock Text="Header" TextAlignment="{StaticResource myTextAlignment}"></TextBlock>
              </DataTemplate>
            </GridViewColumn.HeaderTemplate>
            <GridViewColumn.CellTemplate>
              <DataTemplate>
              <TextBlock TextAlignment="{StaticResource myTextAlignment}" Text="{Binding}"/>
              </DataTemplate>
            </GridViewColumn.CellTemplate>
          </GridViewColumn>
        </GridView>
      </ListView.View>
    </ListView>

正当
价值1
价值2
价值3
价值4

我怀疑单元格是否有列祖先。它更像是一行的后代。我怀疑一个单元格是否有列的祖先。它更可能是一行的后代。我要寻找的是一种方法,让单元格从列标题“继承”其对齐值,并且必须显式地将它们都设置为相同的值。我已经回答了这个问题。我认为这种情况是不可能的,这就是为什么我建议将上述方法作为一种资源。我要寻找的是一种方法,让单元格从其列标题“继承”其对齐值,并且必须显式地将它们都设置为相同的值。我已经回答了这个问题。我认为这种情况是不可能的,这就是为什么我建议将上述方法作为一种资源。