我找不到解决方案的答案:
我有一个带有客户列表的主窗口。编辑客户端将打开一个对话框,其中包含其详细信息。一个字段是“城市”组合框。这些城市是从SQL数据库加载的。
我的问题是关于软件设计的:
我设法做了一些丑陋的事情,但我认为这并不是很优雅:创建所有客户端的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表中都有数据。如何使绑定更简单?
非常感谢您的帮助