我在用户控件中定义了自定义内容(红色圆圈)的按钮,如果按钮被禁用,我希望圆圈变为灰色。
我尝试了以下内容并且无法编译
错误:'IsEnabled'成员无效,因为它没有合格的类型名称。
能解释我在这里做错了吗?
<Button>
<Button.Content>
<Grid>
<Ellipse x:Name="circle" Width="20" Height="20" Fill="Red"/>
</Grid>
</Button.Content>
<Button.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="circle" Property="Fill" Value="Gray"/>
</Trigger>
</Button.Triggers>
</Button>
答案 0 :(得分:2)
IsEnabled
是一个DependecyProperty,它是在Button
继承的类上定义的; XAML要求您明确指定拥有类型。请改为Trigger Property="UIElement.IsEnabled"
。
答案 1 :(得分:0)
这是一种方法:
<Button Name="btn" >
<Ellipse Height="20" Width="20">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="Red" />
<!-- Here is the 'normal' content -->
<Style.Triggers>
<DataTrigger Binding="{Binding IsEnabled, ElementName=btn}" Value="False">
<Setter Property="Fill" Value="Blue" />
<!-- Here is the 'override' content -->
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</Button>
DataTriggers仅适用于样式,因此我们需要定位接收样式但绑定到控件中另一个元素的实际元素。