C# WPF GridViewColumn对齐不起作用

C# WPF GridViewColumn对齐不起作用,c#,wpf,C#,Wpf,我想让GridViewColumn“from”中的信息向右对齐 这就是我所做的,但它不起作用: <ListView ItemsSource="{Binding VolumeNumber}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" > <ListView.View> <GridView AllowsColumnReorder="Fal

我想让
GridViewColumn
“from”中的信息向右对齐

这就是我所做的,但它不起作用:

    <ListView ItemsSource="{Binding VolumeNumber}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" >
       <ListView.View>
          <GridView AllowsColumnReorder="False">
             <GridViewColumn Header="SomeStatus" DisplayMemberBinding="{Binding Name}" Width="170" />
             <GridViewColumn Header="from" DisplayMemberBinding="{Binding Value, StringFormat=0.000000}" Width="170 >
                <GridViewColumn.CellTemplate>
                   <DataTemplate>
                      <TextBlock TextAlignment="Right" Width="40"/>
                   </DataTemplate>
                </GridViewColumn.CellTemplate>
             </GridViewColumn>
          </GridView>
       </ListView.View>
    </ListView>


如果您只想将一个特定列与右侧对齐,请尝试下面的示例

这是我的实现

<Window.Resources>
    <Style TargetType="ListViewItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</Window.Resources>
<Grid>
    <ListView ItemsSource="{Binding VolumeNumber}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="SomeStatus" DisplayMemberBinding="{Binding Name}" Width="170"/>
                <GridViewColumn Header="from" Width="170">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Value}" TextAlignment="Right" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
</Window>

现在不要在GridViewColumn声明中设置DisplayMemberBinding=“{Binding Value}”,您需要在textblock中设置它否则它将忽略您的celltemplate

若要更改列的对齐方式,需要指定每个ListViewItem的HorizontalContentAlignment属性为Stretch,以便每个ListViewItem中的元素可以跨越或沿每个列的整个宽度放置。由于ListView绑定到数据源,因此需要创建设置HorizontalContentAlignment的样式。接下来,您需要使用DataTemplate来显示内容,而不是使用DisplayMemberBinding属性。要显示每个模板的值,DataTemplate只能包含一个TextBlock,该TextBlock的HorizontalAlignment属性设置为Right。 以下示例定义了使列右对齐所需的样式和DataTemplate,并将GridViewColumn更改为引用DataTemplate


这里的问题是
ListViewItem
(即每个
GridViewColumn
单元格的容器)。 您必须将其属性
HorizontalContentAlignment
设置为
Stretch

查看此处(如果要使用DataTemplate,还需要删除
DisplayMemberBinding
):



我忘记了细节,但你需要文本块来拉伸。@Blam
?你告诉我。行吗?试试看HorizontalContentAlignment@Blam水平内容与哪个元素对齐?GridViewColumn或TextBlock上没有HorizontalContentAlignment..我想让你也能接受你的答案:)给你更多的观点,但如果我觉得对我有好处,我会浏览你的帖子并向上投票:)不管@MikroDel。不过我很感激你的尝试
<ListView ItemsSource="{Binding VolumeNumber}" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" >
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridViewColumn Header="SomeStatus" DisplayMemberBinding="{Binding Name}" Width="170" />
            <GridViewColumn Header="from" Width="170">
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Value, StringFormat=0.000000}" TextAlignment="Right" />
                </DataTemplate>
            </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>