MVVM-来自数据库的组合框项目的后期绑定

时间:2018-12-30 13:37:14

标签: c# sql mvvm combobox

我找不到解决方案的答案:

我有一个带有客户列表的主窗口。编辑客户端将打开一个对话框,其中包含其详细信息。一个字段是“城市”组合框。这些城市是从SQL数据库加载的。

我的问题是关于软件设计的:

  1. 何时从SQL Server加载城市列表?
  2. 谁负责保存城市名单?
  3. 如何将数据传递到对话框中的组合框?

我设法做了一些丑陋的事情,但我认为这并不是很优雅:创建所有客户端的ViewModel时,将城市加载到其公共静态字符串数组CITY_ITEMS中,如下所示:

public class ClientsViewModel {
    public static string[] CITY_ITEMS;
    private ObservableCollection<Client> _clients;    // With public counterpart below
    private Client _selectedClient;

    ... 

    public ClientsViewModel () {
        clients = DatabaseHelper.loadClients ();
        CITY_ITEMS = DatabaseHelper.loadCities ();
    }

}

在对话框的XAML中,城市组合框绑定到以下项目:

ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.CITY_ITEMS}"

请记住,我有更多的组合框,其他SQL表中都有数据。如何使绑定更简单?

非常感谢您的帮助

0 个答案:

没有答案