我有以下 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 属性会向下过滤树 - 但这不会发生在这里。
我哪里错了?
谢谢
乔