gpt4 book ai didi

c# - MultiDataTrigger 不适用于绑定(bind)路径条件

转载 作者:行者123 更新时间:2023-11-30 17:03:07 27 4
gpt4 key购买 nike

我已经实现了一个 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>

数据绑定(bind)工作正常,因为当我放入一个测试标签来检查它的值时,它正在“上传”。如果我删除 FileState Condition,它就会开始工作。我用它作为

<StackPanel Name="StackViewCount" Style="{StaticResource StackViewStyle}">
...
</StackPanel>

在查看输出窗口时我发现了这个错误

BindingExpression path error: 'FileState' property not found on 'object' ''StackPanel' (Name='StackViewCount')'. BindingExpression:Path=FileState; DataItem='StackPanel' (Name='StackViewCount'); target element is 'StackPanel' (Name='StackViewCount'); target property is 'NoTarget' (type 'Object')

那么我如何告诉绑定(bind)在 UserControl 中查找 FileState 而不是堆栈面板

现在当我将条件更改为

<Condition Binding="{Binding Path=FileState}" Value="Uploading" />

我没有看到任何错误,但它仍然不起作用。

最佳答案

由于 FileState 是您的 UserControl 的属性并且它是 StackPanel 的祖先,您必须绑定(bind)到祖先喜欢:

<Condition Binding="{Binding Path=FileState, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" Value="Uploading" />

关于c# - MultiDataTrigger 不适用于绑定(bind)路径条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com