次の 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 項目は無効のままです。
IsEnabled プロパティがツリーをフィルタリングすると想定していましたが、ここではそうではありません。
どこが間違っていますか?
ありがとう
ジョー