[英]MultiDataTrigger not working with binding path condition
我已经实现了一个WPF用户控件,我想在这里实现的是在主网格上的鼠标悬停,一些堆栈面板应该隐藏。 我需要有多个触发条件。 尽管到处寻找我无法找到我做错了什么。 UserControl资源如下
<UserControl.Resources>
<Style x:Key="StackViewStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=IsMouseOver}" Value="True" />
<Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource Self}}" Value="Uploading" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Collapsed"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
数据绑定工作正常,因为当我输入测试标签来检查其值时,它是“上传”。 如果我删除FileState条件它开始工作。 我正在使用它
<StackPanel Name="StackViewCount" Style="{StaticResource StackViewStyle}">
...
</StackPanel>
在查看输出窗口时,我发现了这个错误
BindingExpression路径错误:'object'''StackPanel'(Name ='StackViewCount')'上找不到'FileState'属性。 BindingExpression:路径= FileState; DataItem ='StackPanel'(Name ='StackViewCount'); target元素是'StackPanel'(Name ='StackViewCount'); target属性是'NoTarget'(类型'对象')
那么我怎么能告诉绑定在UserControl中查找FileState而不是stackpanel
现在当我改变条件
<Condition Binding="{Binding Path=FileState}" Value="Uploading" />
我没有看到任何错误,但它仍然无法正常工作。
由于FileState
是UserControl
属性,并且它是StackPanel
祖先,因此您必须bind to ancestor
如:
<Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="Uploading" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.