gpt4 book ai didi

wpf - 从数据模板设置父控件的属性

转载 作者:行者123 更新时间:2023-12-04 21:53:33 24 4
gpt4 key购买 nike

如何从数据模板中设置父/祖先控件的属性?

我能想到的唯一方法是在我的表单上创建一个虚拟的不可见控件,然后使用转换器、onewaytosource 和 relativesource findancestor 绑定(bind)将其中一个属性与正确的默认值绑定(bind),这是一个非常可怕的解决方案。

我想做的是能够让 setter 以不同的控件为目标,就像您可以使用具有不同源的绑定(bind)一样。

最佳答案

几个可能的选择:
1)在DataTemplate内部的绑定(bind)上,使用ElementName将源设置为父级,并使用OneWayToSource进行绑定(bind)。这会将值从绑定(bind)目标(DataTemplate 中的元素)传输到绑定(bind)源(父控件)
2) 使用 DataTemplate 和控件都绑定(bind)到的公共(public)对象。 DataTemplate 将使用 OneWayToSource 绑定(bind)到它,控件将使用 OneWay 绑定(bind)到它。它甚至可以是一种资源,因此您可以从 XAML 访问它。
3) 使用RelativeSource 和FindAncestor。
4)使用某种路由事件,并在控制级别处理它。它将通过附加的行为从数据模板中触发(google it!)。事件将传递数据,事件处理程序将在控件上设置相关属性。

选项 1,3 与您的建议类似。选项 2、4 不同。在优雅方面,我更喜欢选项2。

此外 - 请注意所有解决方案中的冲突。如果 DataTemplate 在单个控件内多次实例化,则所有实例都将尝试设置控件的属性。效果将是最后执行的集合尝试的效果,如果您无法控制它们的顺序,在某些情况下可能会出现问题。

亚历克斯。

关于wpf - 从数据模板设置父控件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4365791/

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