首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF GridViewColumn对齐不工作

WPF GridViewColumn对齐不工作
EN

Stack Overflow用户
提问于 2015-05-08 12:28:18
回答 2查看 4.9K关注 0票数 4

我希望GridViewColumn中的信息从“对齐”到“右边”。

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

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-08 13:04:22

如果只希望一个特定列对齐到右边,请在

https://msdn.microsoft.com/en-us/library/bb961985.aspx

这是我的实现

代码语言:javascript
复制
<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 }“,您需要在textblock 中设置它,否则它将忽略单元模板

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

票数 11
EN

Stack Overflow用户

发布于 2015-05-08 13:24:26

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

在这里查看一下(如果要使用DisplayMemberBinding,还需要删除DataTemplate):

代码语言:javascript
复制
<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>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30123898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档