gpt4 book ai didi

c# - 当特定属性更改时评估多重绑定(bind)

转载 作者:行者123 更新时间:2023-12-05 08:01:18 25 4
gpt4 key购买 nike

我有一个看起来像这样的 MultiBinding:

<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="Object1.Object2.MyObject" />
<Binding Path="Object1.Object2.MyCollection[1]" />
<Binding Path="MyBoolean" />
</MultiBinding>

我只想在 MyObject 更改时评估此 MultiBinding(并因此调用 MyConverter.Convert())。我知道我可以将 MultiBinding 的 UpdateSourceTrigger 设置为 Explicit,但考虑到 Object1 和 Object2 会定期重新分配,我必须在后面的代码中连接很多 PropertyChanged 事件。是否可以在 XAML 中实现此目的?

非常感谢任何帮助 - 谢谢!

最佳答案

尝试将宿主控件的 DataContext 设置为 Object2 的。然后你可以直接绑定(bind)到MyObject。这有帮助吗?当然,这仍然意味着对 MyCollectionMyBoolean 的更改也会触发 MultiBinding 重新计算。

如果您提供了您正在使用 MultiBinding 的上下文,这也会有所帮助(即,这是 TextBlock 的返回文本吗?

编辑:

针对您的评论,也许有不同的方式。我假设您的 3 个多绑定(bind)属性具有单独的 PropertyChanged 事件。如果您的应用程序允许,也许您可​​以将这些事件从 MyCollectionMyBoolean 属性中移出并移到 MyObject 属性中。例如:

public object MyObject
{
get { ... }
set
{
...
OnPropertyChanged("MyObject");
OnPropertyChanged("MyCollection");
OnPropertyChanged("MyBoolean");
}
}

现在我知道这有点 hack,但这只会在 MyObject 发生变化时触发 MultiBinding

编辑#2:

另一种选择是将 EventTrigger 添加到托管控件,例如:

<EventTrigger RoutedEvent="MyObject.TargetUpdated">
<Setter TargetName="yourCheckBox" Property="Value">
<Setter.Binding>
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="MyObject" />
<Binding Path="MyCollection" />
<Binding Path="MyBoolean" />
</MultiBinding>
</Setter.Binding>
</Setter>
</EventTrigger>

这里唯一需要注意的是确保在您的复选框绑定(bind)上使用 Mode=TwoWay

我提到了这个link .

关于c# - 当特定属性更改时评估多重绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609256/

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