WPF ListView使用ItemTemplate和GridViewColumn.这可能吗?

本文关键字:GridViewColumn ListView 使用 ItemTemplate WPF | 更新日期: 2023-09-27 18:16:25

我有一个要求,我有一个listview,它被绑定到一个集合使用GridViewColumn。但是我有一个需求,其中基于列中的某些选定值,我修改了listview的项模板。

意味着listview只有一行,项目模板应该被修改。有没有可能……

<Window x:Class="ListViewSample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:ListViewSample"
    Title="MainWindow" Height="350" Width="525"
    >
<Window.Resources>
    <local:ListViewConverter x:Key="listViewConverter"/>
    <DataTemplate x:Key="doubleRowListViewItem">
        <Grid>                
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <TextBlock Background="YellowGreen" Grid.Row="0" Grid.Column="0"/>
            <TextBlock Background="GreenYellow" Grid.Row="1" Grid.Column="0" />                
        </Grid>
    </DataTemplate>
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <ListView Grid.Row="1" ItemsSource="{Binding Persons}" >            
        <ListView.View>
            <GridView>                    
                <GridViewColumn Header="Country" DisplayMemberBinding="{Binding Country}"/>
                <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
</Window>

中,一旦国家的值被设置为一个特定的条目,项目模板应该相应地改变。项目模板应该设置为上面声明的数据模板。

有没有办法做到这一点?

谢谢。Sandeep

WPF ListView使用ItemTemplate和GridViewColumn.这可能吗?

不确定你在寻找什么,但如果你想要一个视觉动态行,你可以放下DisplayMemberBinding并使用CellTemplate。

你可以通过触发器修改这个CellTemplate或多个CellTemplate,就像你可以修改任何其他的模板一样。