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 項目は無効のままです。

IsEnabled プロパティがツリーをフィルタリングすると想定していましたが、ここではそうではありません。

どこが間違っていますか?

ありがとう

ジョー

4

0 に答える 0