0

我有以下 XAML:

            <Grid Grid.Row="3" Margin="8,8">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="*"/>
                </Grid.RowDefinitions>

    <!-- Setting 'UsingItems' here -->
                <CheckBox Grid.Row="0"
                    IsChecked="{Binding Path=UsingItems}" 
                    Content="{Binding Path=IncludeItemsText}" />

                <!-- This works as expected -->
                <CheckBox Grid.Row="1"
                    IsEnabled="{Binding Path=UsingItems}"/>

                <!-- This doesn't! Even though the ListView becomes enabled the Items aren't and the Checkboxes are not checkable! -->
                <ListView Grid.Row="2" IsEnabled="{Binding Path=UsingItems}"
                    VerticalAlignment="Stretch"
                    ItemsSource="{Binding Path=SortedItems}">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <DockPanel>
                                <CheckBox
                                    IsChecked="{Binding Path=.IsSelected}"
                                    Margin="0,2" Click="CheckBox_Click" />
                                <TextBlock
                                    Text="{Binding Path=.Item.ItemDescription}"
                                    Margin="4,0,0,0" 
                                    VerticalAlignment="Top">
                                </TextBlock>
                            </DockPanel>
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Grid>

如果属性“UsingItems”= false,我想禁用 ListView 中的所有项目。'UsingItems' 是使用第 0 行中的复选框设置的,我已经确认这是通过在第 1 行中有一个虚拟复选框来工作的 - 'IsEnabled' 属性按预期设置。

但是,当 'UsingItems' = true 时,ListView 项目保持禁用状态,即使 ListView 已启用(并且项目 'look' 已启用)。

我曾假设 IsEnabled 属性会向下过滤树 - 但这不会发生在这里。

我哪里错了?

谢谢

4

0 回答 0