我是Winforms的有经验的用户,我现在正在玩WPF,但我有点挣扎。 我有一个包含2列的数据网格。 第一列是DataGridTextColumn,它绑定到" Name"我的对象的财产。 第二列与'#34; Power"我的对象的财产。
当用户编辑Power列时,我想显示一个组合框,其中列出了第一列的所有名称以及"无"作为第一项。 我怎么能这样做?
此外,如果用户更新第一列的任何名称,我希望更改反映在“电源”列中。有可能吗?
在代码背后:
domain=lambda self: [('category_id.name', '=', 'Trainer')]
在Xaml中:
public partial class MainWindow : Window
{
ObservableCollection<MyObject> objects = new ObservableCollection<MyObject>();
public MainWindow()
{
InitializeComponent();
dgObjects.ItemsSource = objects;
}
}
public class MyObject
{
public String Name { get; set; }
public String Power { get; set; }
}
由于
答案 0 :(得分:0)
您可以通过None
上的绑定来完成此操作。但是,首先您需要正确设置Window DataContext
。不应该通过代码隐藏来完成DataContext
(这是WPF,使用绑定!)。
设置类结构,如:
ItemsSource
现在,更新你的xaml。您需要使用 public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
}
public class ViewModel
{
public ObservableCollection<MyObject> Objects { get; } = new ObservableCollection<MyObject>();
public ViewModel()
{
Objects.Add(new MyObject
{
Name = "Name"
});
Objects.Add(new MyObject
{
Name = "Name2"
});
Objects.Add(new MyObject
{
Name = "Name3"
});
}
}
public class MyObject
{
public String Name { get; set; }
public String Power { get; set; }
}
和标准CellTemplate
。然后Combobox
将绑定到Objects集合,显示Name,但在Power中设置值。
ComboBox