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

时间:2016-09-20 13:21:02

标签: c# wpf listview checkbox

我想在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>

2 个答案:

答案 0 :(得分:0)

Text提供WidthCheckbox。如果不设置Text属性,则长度将自动为&#34; 0&#34;如果您未指定其Width

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

答案 1 :(得分:0)

问题在于我以错误的方式绑定数据。我使用以下代码。

 ListViewItem item = new ListViewItem();
                        item.Tag = docType;
                        item.Text = docType.Text;
                        listViewDocTypes.Items.Add(item);

正确的绑定方式是

listViewDocTypes.ItemsSource = docTypes;