【发布时间】:2016-10-03 18:52:27
【问题描述】:
我是一位经验丰富的 Winforms 用户,我现在正在使用 WPF,但我有点挣扎。 我有一个包含 2 列的数据网格。 第一列是绑定到我的对象的“名称”属性的 DataGridTextColumn。 第二列绑定到我的对象的“Power”属性。
当用户编辑电源列时,我想显示一个组合框,其中列出了第一列的所有名称以及“无”作为第一项。 我该怎么做?
此外,如果用户更新第一列的任何名称,我希望更改反映在 Power 列中。有可能吗?
在后面的代码中:
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; }
}
在 Xaml 中:
<DataGrid Name="dgObjects" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridComboBoxColumn Header="Power" Binding="????"/>
</DataGrid.Columns>
</DataGrid>
谢谢
【问题讨论】:
-
您可以在其他地方设置和维护您的集合,通常与包含要绑定数据网格的项目集合的级别相同,然后通过更改 @ 将
ComboBox.ItemsSource绑定到该集合987654324@的绑定。在最常见的场景中,RelativeSource绑定用于查找父DataGrid并绑定到DataGrid.DataContext.SomeCollection。例如,ItemsSource="{Binding DataContext.PowerValues, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
标签: wpf validation data-binding datagrid datagridcomboboxcolumn