带有按钮的WPF扩展器标头应始终启用

时间:2017-10-06 15:45:12

标签: wpf expander

我希望在扩展内容区域中没有要显示的内容时禁用扩展器,但同时我希望标头中的按钮始终处于启用状态。

以下XAML在禁用扩展器时不起作用,然后该按钮也被禁用。所以似乎某些东西(默认样式)覆盖了按钮的IsEnabled设置。

<Expander
   IsEnabled="False"
   IsExpanded="False">
   <Expander.Header>
     <StackPanel Orientation="Horizontal">
       <TextBlock>Short header text</TextBlock>
       <Button Content="Always enabled" IsEnabled="True" />
     </StackPanel>
  </Expander.Header>
  <TextBlock Text="Not to be seen by the user, as the expander should be disabled to expand" />
</Expander>

结果:Outcome

通缉结果:enter image description here

似乎IsEnabled似乎总是在标题中的stackpanel,textblock和按钮上设置为False。我尝试使用一个成功更改标题背景(红色),但按钮仍未启用。

<DataTemplate x:Key="StretchableExpanderHeader">
  <Grid x:Name="Grid">
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <StackPanel x:Name="StackPanel">
      <ContentPresenter Content="{Binding}" x:Name="ContentPresenter"/>
    </StackPanel>
  </Grid>
  <DataTemplate.Triggers>
    <Trigger SourceName="Grid" Property="IsEnabled" Value="False">
      <Setter TargetName="ContentPresenter" Property="IsEnabled" Value="True" />
      <Setter TargetName="ContentPresenter" Property="Background" Value="Red" />
    </Trigger>
  </DataTemplate.Triggers>
</DataTemplate>

有没有办法在没有重新设置扩展器样式的情况下启用按钮?我希望任何人都可以根据需要设置样式,但标题中的按钮不应受到影响。

0 个答案:

没有答案