我已经实现了一个WPF用户控件,我想在主网格上鼠标悬停时隐藏一些堆栈面板。而且我需要有多个触发条件。尽管我到处查找,但我无法找到我做错了什么。用户控件资源如下:
<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路径错误:在“对象”“'StackPanel'(名称='StackViewCount')”上未找到“FileState”属性。 BindingExpression: Path = FileState; DataItem ='StackPanel'(名称='StackViewCount');目标元素为'StackPanel'(名称='StackViewCount');目标属性为'NoTarget'(类型为'Object')
那么我该如何让绑定在用户控件中查找FileState而不是StackPanel呢?
现在,当我将条件更改为
<Condition Binding="{Binding Path=FileState}" Value="Uploading" />
我没有看到任何错误,但仍然无法工作。
FileState
是说uploading
还是Uploading
?请注意大小写。同时,请检查输出窗口是否有错误信息。 - Arian Motamedi