我已经实现了一个 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 Condition 它开始工作。我用它作为
<StackPanel Name="StackViewCount" Style="{StaticResource StackViewStyle}">
...
</StackPanel>
在查看输出窗口时我发现了这个错误
BindingExpression 路径错误:在“对象”“StackPanel”(名称=“StackViewCount”)上找不到“FileState”属性。绑定表达式:路径=文件状态;DataItem='StackPanel'(名称='StackViewCount');目标元素是'StackPanel'(名称='StackViewCount');目标属性是“NoTarget”(类型“对象”)
那么我如何告诉绑定在 UserControl 而不是 stackpanel 中查找 FileState
现在,当我将条件更改为
<Condition Binding="{Binding Path=FileState}" Value="Uploading" />
我没有看到任何错误,但它仍然不起作用。