2011-10-19 3 views
3

私は、カスタムテンプレートでエキスパンダーを持っている:IsEnabledを使用してエキスパンダーの部分を無効にする方法はありますが、全体をエキスパンダーの部分を無効にする方法はありますか?

<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> 

基本的に、私はfalseにIsEnabledプロパティを設定した場合、私のScrollViewerのはまだそれが有効になったまま(スクロールし、それ以外の部分ができるようにそれを作るしようとしています私のコントロールの無効)。それを行うには?

答えて

3

Robert's answerが機能しない場合は、IsContentEnabledという名前のAttachedPropertyを作成し、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> 
+0

私はこれがコードビハインドに依存しないので、この回答が好きです –

関連する問題