gpt4 book ai didi

wpf - 如何使用绑定(bind)更新 UI

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

我的窗口中有一个 DataGrid 和两个 ListBox。我正在使用 Entity Framework 连接到我的 SQL Server。根据我在 ListBoxes 参数中所做的选择,将传递给我的存储过程,并检索我的 DataGrid 的数据。我能够在不使用 MVVM 的情况下实现此功能。我想知道如何使用 MVVM 来实现它。请帮帮我。提前致谢。

最佳答案

首先,MVVM 是将代码的关注点分离到适当的区域。例如,通过 EF 与数据库对话应该在 Model1 中完成。 ViewModel 负责保存数据,并对其进行整形或按摩以使其更适合显示(即将枚举转换为颜色2等)。

要以 MVVM 方式实现您的功能,您需要使用绑定(bind),并将您的 View 模型绑定(bind)到您的 View :

<MyControl>
<LayoutRoot>
<ListBox ItemsSource={Binding MyItems} SelectedItem={Binding MySelection} />
</LayoutRoot>
</MyControl>

在 View 后面的代码中:
public class MyControl
{
public MyControl()
{
this.DataContext = new MyViewModel();
}
}

你的 ViewModel 看起来像这样:
public class MyViewModel : INotifyPropertyChanged
{
public ObservableCollection<MyDataObject> MyItems
{
get { return _myItems; }
set
{
_myItems = value;
OnPropertyChanged("MyItems");
}
}

public MyDataObject MySelection { get; set; }

public void DoSomethingWithDatabase()
{
Model.DoSomething(MySelection);
}
}

这只是一个非常简单的例子来说明如果你以 MVVM 方式做事需要什么(我故意遗漏了很多东西)。做一个正确的例子并记录你需要知道的所有基本信息至少需要一本书的一章,所以我会推荐你​​引用 MSDN 文章进一步阅读: Implementing the Model-View-ViewModel Pattern .

1 如果您还实现 SOA,模型可能只是一个垫脚石,模型可能只是调用一个服务,然后与数据库对话。
2 这也可以通过 Converters 来完成。在 View 中,但在转换器中可能并不总是可行或实用。

关于wpf - 如何使用绑定(bind)更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8796802/

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