2016-08-02 49 views
0

引用到这个问题:WPF Databinding: How do I access the "parent" data context?绑定头文字块的IsEnabled于母公司GROUPBOX的IsEnabled

我想要做类似的东西,但对于一个组框的头(因为头不与Box关注的是被禁用,因此是总是黑色的,其余的是浅灰色的,如果箱子的所有内容都是灰色的,上面是灰色的,但是箱子标题本身保持黑色,这对我来说看起来有点奇怪。在flq的链接问题中提到将头文本块的isEnabled属性简单地绑定到groupbox的isEnabled属性,但似乎我在某个点的绑定失败了,我不知道wh这就是为什么。

继承人我当前的代码:

<GroupBox Header="Change Steps" Grid.Row="2" Grid.ColumnSpan="3" Name="gbChangeSteps"> 
    <GroupBox.Style> 
      <Style TargetType="GroupBox"> 
       <Setter Property="HeaderTemplate"> 
        <Setter.Value> 
         <DataTemplate> 
          <TextBlock Text="{Binding}" FontWeight="Bold" Height="19" Foreground="Black" IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GroupBox}}, Path=isEnabled}"/> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 
     </GroupBox.Style> 
<!-- ... (some non relevant Content)--> 
</GroupBox> 

回答

0

后更多的研究,我发现导致我的帖子Disable groupBox including the groupBox name in WPF ,在属性 - 组合>创建Databinding->绑定类型 - >的UIElement到固定的两个解决方案问题,这个问题是关于这个问题的,原来的问题是导致整个重新整理的问题,那就是像小g这样的字母在标题中混乱了。 这是解决问题的代码:

<GroupBox.Style> 
    <Style TargetType="{x:Type GroupBox}"> 
     <Setter Property="HeaderTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <TextBlock Text="{Binding}" FontWeight="Bold" Height="19" IsEnabled="{Binding IsEnabled, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UIElement}}}"> 
         <TextBlock.Style> 
          <Style> 
           <Style.Triggers> 
            <Trigger Property="Control.IsEnabled" Value="False"> 
             <Setter Property="Control.Foreground" Value ="#FF6D6D6D" /> 
            </Trigger> 
           </Style.Triggers>  
          </Style> 
         </TextBlock.Style> 
        </TextBlock> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</GroupBox.Style>