【问题标题】:Center single column in ListView holding an imageListView 中的单列居中,包含一个图像
【发布时间】:2012-10-10 01:09:50
【问题描述】:

我有一个包含三列的 Listview。最后一列包含一个图像,该图像仅在该列绑定的数据为真时才会显示。

<ListView HorizontalAlignment="Stretch" Margin="5" VerticalAlignment="Stretch" Name="lstPrinters"  ItemsSource="{Binding PrinterCollection}">
<ListView.View>
    <GridView>
            <GridViewColumn Width="140" Header="Name" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Width="250" Header="UNC" DisplayMemberBinding="{Binding UNC}" />
                <GridViewColumn Width="50" Header="Default"  >
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" >
                            <Image Width="16" Height="16"  Source="/PrinterController.Agent;component/images/GreenTick.png">
                                <Image.Style>
                                    <Style TargetType="{x:Type Image}" >
                                        <Style.Triggers>
                                            <DataTrigger Binding="{Binding IsDefault}" Value="false">
                                                <Setter Property="Visibility" Value="Collapsed" />
                                            </DataTrigger>
                                            <DataTrigger Binding="{Binding IsDefault}" Value="true">
                                                <Setter Property="Visibility" Value="Visible" />
                                            </DataTrigger>
                                        </Style.Triggers>
                                    </Style>
                                </Image.Style>
                            </Image>
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
</ListView.View>

我希望图像在列中水平居中,但无论我如何尝试它都不会居中。老实说,我已经尝试了很多方法来做到这一点,我开始忘记我拥有和没有尝试过的东西!我已经关注了所有我能找到的与这个问题相关的 SO 文章,但没有一个有效。我只希望这一列居中。

任何指针将不胜感激。

【问题讨论】:

    标签: wpf listview alignment


    【解决方案1】:

    将此添加到您的 ListView:

    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListView.ItemContainerStyle>
    

    【讨论】:

    • 老实说,我不明白为什么这只会使一列居中,但它却是一个梦想!谢谢。
    • @Fred 这只是让列可以使用所有单元格,这意味着如果您将它们设置为居中,它们实际上可以。
    • 好的,现在说得通了。我很久没有使用 WPF 了。一开始不喜欢,但开始改变主意。我想这都是关于不喜欢你不理解的东西。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    相关资源
    最近更新 更多