WPF ListView with GridViewColumn and DataTemplate

我与影子孤独终老i 提交于 2019-11-26 19:51:48

问题


I have a CheckedListBox control which is created by adding a DataTemplate with a CheckBox to a ListView. The problem is that I need columns too.

The following code doesn't display the check boxes:

<ListView x:Name="lbDatabases" Height="138" Width="498" Canvas.Left="44" Canvas.Top="146">
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding="{Binding DbName}" Header="Databases" Width="498"/>
        </GridView>
    </ListView.View>
    <ListView.ItemTemplate>
        <DataTemplate>                    
            <CheckBox IsChecked="{Binding IsActive}" Checked="AnyChange" Unchecked="AnyChange"  Style="{x:Null}" Content="{Binding DbName}"
                      Width="{Binding CheckWidth}" />
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

However, if I comment out this code, everything works fine but no columns:

<ListView.View>
    <GridView >
        <GridViewColumn DisplayMemberBinding="{Binding DbName}" Header="Databases" Width="498"/>
    </GridView>
</ListView.View>

Is there any way to have it all?


回答1:


You need to define the data template as CellTemplate for your column:

<ListView x:Name="lbDatabases" Height="138" Width="498" Canvas.Left="44" Canvas.Top="146"  >
    <ListView.View >
        <GridView >
            <GridViewColumn Header="Databases" Width="498">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsActive}" Checked="AnyChange" Unchecked="AnyChange"  Style="{x:Null}" Content="{Binding DbName}"
                                  Width="{Binding CheckWidth}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>



回答2:


ok after struggling all morning I figured it out. They key here is to use a CellTemplate:

 <ListView x:Name="lbDatabases" Height="138" Width="498" Canvas.Left="44" Canvas.Top="146"  Style="{StaticResource ListViewStyle}">
        <ListView.View >
            <GridView>
                <GridViewColumn Header="Databases" Width="498">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                        <CheckBox IsChecked="{Binding IsActive}" Checked="AnyChange" Unchecked="AnyChange"  Style="{x:Null}" Content="{Binding DbName}"
                   Width="{Binding CheckWidth}" />
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>            
    </ListView>


来源:https://stackoverflow.com/questions/4725352/wpf-listview-with-gridviewcolumn-and-datatemplate

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!