参考这个问题:WPF Databinding: How do I access the "parent" data context?
我想做类似的事情,但是对于Groupbox的标题(因为标题与Box无关,因此被禁用,因此总是黑色,而其余部分是浅灰色。如果全部这对我来说有点奇怪盒子的内容是灰色的,上面是灰色的,但是盒子标题本身保持黑色。
所以我尝试使用flq链接问题中提到的方法简单地将标题文本块的isEnabled属性绑定到groupbox的isEnabled属性,但似乎我的绑定在某些时候失败了,我不会'我知道确切的地点和原因。
继承我当前的代码:
<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 :(得分:0)
经过额外的研究后,我找到了帖子Disable groupBox including the groupBox name in WPF 引导我,结合Properties-&gt;创建数据绑定 - &gt;绑定类型 - &gt; 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>