C# MultiDataTrigger不使用绑定路径条件

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

我已经实现了一个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路径错误:“在对象”“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,它不是堆栈面板,而是父用户控件的。