我在窗口上有一个ListBox和一个Button。当ListBox具有焦点时,Button的IsEnabled
属性应为True。这是我尝试过的:
<Style TargetType="{x:Type ListBox}">
<Setter
Property="Margin"
Value="15,0,15,20"></Setter>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True" />
<Setter TargetName="btnActivate" Property="IsEnabled" Value="True" />
</Style.Triggers>
</Style>
这看起来非常简单,但我收到一条错误消息
btnActivate无法识别。
这样做的正确方法是什么?
编辑1 我实现了MoonMoo的建议链接如下:
IsEnabled="{Binding ElementName=lstInactive, Path=SelectedIndex, Converter={StaticResource cvtr}}">
使用此转换器:
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
Dim IsFocused As Integer = CInt(value)
Return If(IsFocused > -1, True, False)
End Function
这可以在列表框聚焦时启用IsEnabled,但在列表框失去焦点时不会将其关闭。我想也许我必须研究一个多绑定,它也会绑定到可能引起关注的其他控件。
编辑2 我应该提一下,我试过了:
IsEnabled="{Binding ElementName=lstInactive, Path=IsFocused, Converter={StaticResource cvtr}}">
带转换器:
Return CBool(value)
但是没有改变按钮的IsEnabled属性
答案 0 :(得分:0)
您可以使用DataTrigger
作为按钮:
<Button>
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused,ElementName=YourListBoxName}" Value="True">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>