XAML
select
c.CustomerId,
c.CustomerName,
c.BillToCustomerId,
b.CustomerName as "Bill To This Company"
from Customer c
left join Customer b on (b.CustomerId = c.BillToCustomerId)
注意
<utility:InvalidNotification x:Name="InvalidNotificationControl"/>
<Button Content="Clean AppV Cache" Click="Button_Click">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=InvalidNotificationControl, Path=Visibility}" Value="Visible">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
是自定义UserControl
现在,InvalidNotification
最初工作正常并禁用按钮,因为Usercontrol可见。
问题是当我根据另一个条件折叠Usercontrol时按钮保持禁用状态。我发现这个相关的answer表明当触发条件不再满足时,触发器更改的属性会自动重置为之前的值。这不是我的情况。那是为什么?
修改
感谢@ mm8让我找到了解决方案。因此,如果您尝试将控件绑定到UserControl的内容(我的情况下为内部DataTrigger
),只需在您的底部添加第二个触发器像这样的用户控件,
TextBlock
其中<UserControl.Style>
<Style TargetType="UserControl">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=Notification, Path=Visibility}" Value="Visible">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Style>
是我notification
答案 0 :(得分:1)
如果你切换/设置Visibility
控件本身的InvalidNotification
属性,那么你的示例是可行的,因为它是你绑定的属性。
如果在Visibility
控件中设置某个元素的InvalidNotification
属性,则需要绑定到此特定元素。
您无法使用ElementName
绑定执行此操作,因为Button
和InvalidNotification
控件中定义的任何元素都不属于同一个名称范围。