C# MultiDataTrigger不使用绑定路径条件
我已经实现了一个WPF用户控件,我想在这里实现的是在主网格上的鼠标上,一些堆栈面板应该隐藏起来。我需要有多个触发条件。尽管到处找,我还是找不到我做错了什么。UserControl资源如下所示C# MultiDataTrigger不使用绑定路径条件,c#,wpf,xaml,user-controls,custom-controls,C#,Wpf,Xaml,User Controls,Custom Controls,我已经实现了一个WPF用户控件,我想在这里实现的是在主网格上的鼠标上,一些堆栈面板应该隐藏起来。我需要有多个触发条件。尽管到处找,我还是找不到我做错了什么。UserControl资源如下所示 <UserControl.Resources> <Style x:Key="StackViewStyle" TargetType="{x:Type StackPanel}"> <Style.Triggers> <Mul
<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'(Name='StackViewCount')上找不到FileState”属性。BindingExpression:Path=FileState;DataItem='StackPanel'(Name='StackViewCount');目标元素是“StackPanel”(Name='StackViewCount');目标属性为“NoTarget”(类型为“Object”)
那么,我如何告诉绑定在UserControl而不是stackpanel中查找FileState呢
现在当我把条件改为
<Condition Binding="{Binding Path=FileState}" Value="Uploading" />
我没有看到任何错误,但它仍然不起作用 由于
FileState
是您的UserControl
的属性,并且它是StackPanel
的祖先,因此您必须绑定到祖先
如下:
<Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="Uploading" />
FileState是StackPanel的属性?否,它是UserControl的属性@DJ我想我没有抓住重点,我怎么能使用usercontrol的绑定。正如我已经尝试过的那样,{Binding Path=FileState}。FileState
是说uploading
还是uploading
?请注意,案例很重要。另外,检查输出窗口是否有错误。显然,我知道区分大小写很重要。第二件你们提出的事情,给我一个线索,因为它正在堆栈面板中搜索FileState,它不是堆栈面板,而是父用户控件的。