I have an expander with a custom template:
<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>
Basically, I'm attempting to make it so that if I set the IsEnabled property to false my scrollviewer still can scroll (it stays enabled, but other parts of my control disable). Any way to do that?
If Robert's answer doesn't work, you could always create an AttachedProperty
called IsContentEnabled
and bind your ContentPresenter's IsEnabled to that property.
<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>