【问题标题】:how to add column headers to a listview如何将列标题添加到列表视图
【发布时间】:2018-11-12 14:40:53
【问题描述】:

我有一个按我想要的方式构建和设置样式的列表视图。现在我只是想给它添加列标题,但这似乎比我想象的要困难。是否有必要在这个 xaml 模型中添加某种数据网格来获取列标题,或者我可以添加一些非常基本的东西?

<ListView ItemsSource="{Binding PlayerOC, Mode=TwoWay}" AlternationCount="2">
    <ListView.ItemContainerStyle>  
        <Style TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border Name="_Border"
                                Padding="0"
                                SnapsToDevicePixels="true">
                            <ContentPresenter />
                        </Border>
                        <ControlTemplate.Triggers>                                            
                            <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                                <Setter Property="Background" Value="#19f39611"></Setter>
                            </Trigger>
                            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                <Setter Property="Background" Value="#19000000"></Setter>
                            </Trigger>

                            <Trigger Property="IsSelected" Value="true">
                                <Setter TargetName="_Border" Property="Background" Value="White"/>
                                <Setter TargetName="_Border" Property="Padding" Value="1"/>
                                <Setter Property="Foreground" Value="White"/>
                                <Setter Property="FontWeight" Value="Bold"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>                        
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate >
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Background="{Binding RowColor}"  >
                <TextBlock Text="{Binding PlayerNumber}" Padding="5" Width="50" />
                <TextBlock Text="{Binding PlayerName}"  Padding="5"  Width="200" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

【问题讨论】:

    标签: wpf xaml listview


    【解决方案1】:

    这是向 ListView 添加列的常用方法:

    <ListView ItemsSource="{Binding Data}" BorderBrush="Gray" BorderThickness="1" Margin="5">
        <ListView.View>
            <GridView>
                <GridViewColumn DisplayMemberBinding="{Binding Id}" Header="Id"/>
                <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name"/>
            </GridView>
        </ListView.View>
    </ListView>
    

    【讨论】:

    • 它有效。我之前尝试过,但我认为我必须删除包含堆栈面板的数据模板,这完全破坏了模型。谢谢。你让我以不同的方式看待这件事。
    • 其实我已经有了Itemsource,我什至不需要DisplayMemberBinding 属性。我需要的只是列的标签。
    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多