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中执行此操作,而不是在代码中。