【发布时间】:2019-12-28 18:01:35
【问题描述】:
我希望禁用一个文本框,除非用户将鼠标悬停在它上面。但这不起作用,如果我将鼠标悬停在文本框上,它仍然不可编辑。 (是的,我知道这很不寻常。) 我尝试的是:
<Border>
<TextBox Text="Hover to edit me!" IsEnabled="False" >
<TextBox.Style>
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Border}, Path=IsMouseOver}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
<!-- this does not work either -->
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
<!-- neither did this -->
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="IsEnabled" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</Border>
我想知道是否可以使用触发器?
【问题讨论】:
-
可能没有抓住重点,但你为什么不直接绑定到 IsMouseOver 呢?
-
好问题!我也试过了,但也没有用,我检查了是否可以将它绑定到外部元素,在这种情况下是 Border,也没有运气。
标签: c# wpf datatrigger