gpt4 book ai didi

WPF 依赖属性解决方法

转载 作者:行者123 更新时间:2023-12-03 10:18:36 26 4
gpt4 key购买 nike

主窗口下有 3 个用户控件。每个控件都有自己的保存按钮。主窗口有一个 SaveAll 按钮。

MainWindow 有一个 ContentControl,并且 content 属性绑定(bind)到 VM。在 ButtonClickCommand 上运行时, View 被实例化并分配给内容属性。

此 SaveAll 按钮将在内部调用与 UserControls Save 按钮关联的方法。因此,SaveAll 没有它自己的方法。

这必须由 DependencyProperty 实现。

我曾经在商业应用程序中看到过这种场景,但不知何故错过了它背后的概念。

我不明白这背后的逻辑是什么,但这是一件非常有用的事情。

现在我必须实现这一点,但我错过了一件小事,我不知道。

我希望情况很清楚。

请在这种情况下使用代码帮助我。

谢谢,
主播

最佳答案

既然您提到了 MVVM,这就是您可能正在寻找的内容。请注意,如果您使用诸如 Caliburn 之类的 MVVM 框架,这将更加简洁和容易,但对于此示例,它只是普通的 MVVM:

public class MainViewModel
{
public MainViewModel()
{
ViewOneModel = new SubViewModel();
ViewTwoModel = new SubViewModel();
Children = new List<SubViewModel>(new[] { ViewOneModel, ViewTwoModel });
}

public void SaveAll()
{
foreach(var child in Children)
{
child.Save();
}
}

public IList<SubViewModel> Children { get; private set; }

public SubViewModel ViewOneModel { get; set; }
public SubViewModel ViewTwoModel { get; set; }
}

public class SubViewModel
{
public void Save()
{
}
}

在 UI 上,您的主视图中基本上包含 subview (UserControls):
<StackPanel>
<Button Width="100" Height="20" Content="Save All" />

<local:ViewOne DataContext="{Binding ViewOneModel}" />

<local:ViewTwo DataContext="{Binding ViewTwoModel}" />
</StackPanel>

您只需使用 ICommand 接口(interface)(最好是 RelayCommand 实例)将保存方法绑定(bind)到您的按钮。

关于WPF 依赖属性解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040128/

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