C# 3.0 WPF ContentControl:如何在.cs文件中更改禁用模式下的控件不透明度?

C# 3.0 WPF ContentControl:如何在.cs文件中更改禁用模式下的控件不透明度?,c#-3.0,wpf-controls,C# 3.0,Wpf Controls,我有公共类MyControl:ContentControl,在wch中我有控件和与之对应的事件的定义 此控件工作正常,但禁用时看起来仍像启用。我想做一些事情,比如如果control.isenabled=false那么control.opacity=0.5我该怎么做?在WPF中,对于这些事情,使用触发器 <MyControl> <MyControl.Triggers> <Trigger Property="IsEnabled" Value="false">

我有
公共类MyControl:ContentControl
,在wch中我有控件和与之对应的事件的定义


此控件工作正常,但禁用时看起来仍像启用。我想做一些事情,比如如果
control.isenabled=false
那么
control.opacity=0.5我该怎么做?

在WPF中,对于这些事情,使用触发器

<MyControl>
<MyControl.Triggers>
   <Trigger Property="IsEnabled" Value="false">
       <Setter Property="Opacity" Value="0.5" />
   </Trigger>
</MyControl.Triggers>
</MyControl>

如你所说-此触发器不工作-我已检查

但我找到了解决方案——在OnApplyTemplate方法中,我添加了几行:

public override void OnApplyTemplate()
{
    //...
    if (this.IsEnabled == false)
    {
        this.Opacity = 0.4;
    }
}

谢谢,但我想在.cs文件中而不是在xaml中进行这些更改。我可以在有我的控件定义的.cs文件中设置这些触发器吗?当然可以,但不应该-这太复杂了。处理IsEnabledChanged事件以更改控件不透明度实际上不能使用这样的触发器。属性触发器仅允许在样式或模板触发器集合中使用。在此上下文中,只有EventTrigger才有效。也就是说,Yurec是正确的,在WPF中,更倾向于在控件的ControlTemplate XAML中执行此操作,而不是在代码中。