我有两个视图模型。一个显示IP地址集合,另一个显示具有多个参数的对象集合。其中一个参数是IPAddress。所以,我有另一个面板绑定到第二个对象的属性。我想组合框将ItemSource设置为第一个对象,但选定的项目绑定到第二个对象。但是,我似乎只能在代码后面的控件上设置一个datacontext。有没有办法解决?如果可能的话,我更愿意在代码背后执行此操作(我发现xaml编程最好是非理想的),但我会采取任何措施。
答案 0 :(得分:1)
对于ComboBox,将IPAddresses的集合绑定到ItemsSource属性,并将ComboBox的SelectedItem绑定到“众多属性对象”集合的SelectedItem的IPAddress属性。
答案 1 :(得分:0)
如果我对您的对象(包括名称)有更好的描述,这将更容易回答。但是听起来我觉得你应该用ipaddress作为键,第二个对象作为值来制作字典。
如果你可以这样做,那么你可以用这样的代码绑定它:
comboBox.ItemsSource = dictionary;
comboBox.DisplayMemberPath = "Key";
comboBox.SelectedValuePath = "Value";
这假设您对集合中的每个IPAddress只有一个“第二个对象”。根据您的描述,这听起来是对的。
答案 2 :(得分:0)
查看Bindings的Source property。它基本上是一个特定绑定的DataContext。它应该使你想要做的事情非常简单,尤其是在代码背后。