gpt4 book ai didi

WPF MVVM 控件错误地共享 ViewModel

转载 作者:行者123 更新时间:2023-12-03 10:53:47 25 4
gpt4 key购买 nike

我有一个控制:
每日营业时间。那有一组我创建的自定义 TimeEdit 控件。每个控件都应该绑定(bind)到 DailyHours View 模型类。相反,它会尝试在 TimeEdit 控件中找到我绑定(bind)到的值。

TimeEdit 控件绑定(bind)的示例:

<bc:TimeEdit Time="{Binding CurrentOperatingHours.MondayClose}" ></bc:TimeEdit>

TimeEdit 控件有自己的内部小时和分钟值,这些值绑定(bind)到 Hour 和 Minute 属性。由于这个原因,TimeEdit 控件的 DataContext 就是它本身。
public TimeEdit()
{
InitializeComponent();
this.DataContext = this;
}

但是,这会导致 DailyHours 控件错误地绑定(bind)时间值。它在 TimeEdit 控件而不是它自己的 View 模型中查找 CurrentOperatingHours 属性。

如何让我的 TimeEdit 控件与内部值正确绑定(bind),而不会干扰其父容器上的绑定(bind)?

最佳答案

您可以采用两种方式:删除 this.Datacontext = this;从您的用户控件中并使用 ElementName 的 Hour 和 Minute 绑定(bind)(好的做法!)或在 Mainview 中使用 relativeSourceBinding (不好的做法)。

我回答了一个类似的问题 here .

ps:用户控件永远不应该将数据上下文设置为它自己。这破坏了数据上下文继承,它不是预期的行为。

关于WPF MVVM 控件错误地共享 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11260319/

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