无法在WPF中显示listviewitem的复选框

本文关键字:listviewitem 复选框 显示 WPF | 更新日期: 2023-09-27 18:07:58

我想在ListView中显示文本旁边的复选框。我的WPF窗口中有多个listview,因此我想将这种行为指定为资源中的样式。但是复选框不显示,只显示文本。所以,请找到下面我的代码和建议编辑。

<Window.Resources>
    <Style TargetType="ListView"  x:Key="ListViewTemplate">
        <Setter Property="Background" Value="Transparent"></Setter>
        <Setter Property="BorderBrush" Value="Transparent"></Setter>
        <Setter Property="ItemTemplate">
            <Setter.Value>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <CheckBox IsChecked="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}" Content=""></CheckBox>
                        <Separator Width="5"></Separator>
                        <TextBlock Text="{Binding Text}"></TextBlock>
                    </StackPanel>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<Grid>
    <ListView Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="8" Grid.RowSpan="5" x:Name="listViewDocTypes" Style="{DynamicResource ListViewTemplate}"    >
    </ListView>
</Grid>

无法在WPF中显示listviewitem的复选框

Checkbox提供TextWidth。如果没有设置Text属性,如果不指定其Width,长度将自动为"0"。

<CheckBox Content="xyz" Width="1234"/>

问题是我绑定数据的方式不对。我使用了以下代码:

 ListViewItem item = new ListViewItem();
                        item.Tag = docType;
                        item.Text = docType.Text;
                        listViewDocTypes.Items.Add(item);
正确的绑定方式是
listViewDocTypes.ItemsSource = docTypes;