如何使用IsEnabled禁用Expander的部分内容,而不是整个Expander?

3

我有一个自定义模板的扩展器:

<ControlTemplate TargetType="{x:Type Expander}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Border Grid.Row="0">
            <DockPanel>
                <ToggleButton DockPanel.Dock="Right" Template="{DynamicResource ExpanderToggle}" />
                <ContentPresenter DockPanel.Dock="Right" ContentSource="Tag" />
                <ContentPresenter DockPanel.Dock="Left" ContentSource="Header">
            </DockPanel>
        </Border>
        <Border Visibility="Collapsed" Grid.Row="1">
            <ScrollViewer IsEnabled="True">
                <ContentPresenter IsEnabled="{TemplateBinding IsEnabled}" />
            </ScrollViewer>
        </Border>
    </Grid>
</ControlTemplate>

基本上,我想实现的是,如果我将IsEnabled属性设置为false,我的滚动视图仍然可以滚动(它保持启用状态,但我控件的其他部分会禁用)。有没有什么方法可以做到这一点?

2个回答

3
如果Robert的答案不起作用,您可以创建一个名为IsContentEnabled附加属性,并将ContentPresenter的IsEnabled绑定到该属性。
<Expander local:IsContentEnabled="False" />

<ControlTemplate TargetType="{x:Type Expander}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Border Grid.Row="0">
            <DockPanel>
                <ToggleButton DockPanel.Dock="Right" Template="{DynamicResource ExpanderToggle}" />
                <ContentPresenter DockPanel.Dock="Right" ContentSource="Tag" />
                <ContentPresenter DockPanel.Dock="Left" ContentSource="Header">
            </DockPanel>
        </Border>
        <Border Visibility="Collapsed" Grid.Row="1">
            <ScrollViewer>
                <ContentPresenter IsEnabled="{TemplateBinding local:IsContentEnabled}" />
            </ScrollViewer>
        </Border>
    </Grid>
</ControlTemplate>

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接