数据结合为DataGridComboBoxColumn看起来更复杂一点可能比你想象的。
- 使用ObservableCollection而不是名单。 这将自动更新内容的数据表格.
- 可以将数据加载到一个组合框使用ObjectDataProvide. 这也将确保数据的来源是自动更新。
这里有一个工作实例。
public partial class MainWindow : Window
{
public EmployeeViewModel EmployeeVM;
public MainWindow()
{
InitializeComponent();
EmployeeVM = new EmployeeViewModel();
MyDataGrid.ItemsSource = EmployeeVM.EmployeeList;
}
}
public class Employee
{
public string Name { get; set; }
public PositionEnum Position { get; set; }
}
public enum PositionEnum { Marketeer, Mechanic, Accountant };
public class EmployeeViewModel
{
public ObservableCollection<Employee> EmployeeList =
new ObservableCollection<Employee>();
public EmployeeViewModel()
{
EmployeeList.Add(new Employee()
{ Name = "James Smith", Position = PositionEnum.Accountant });
EmployeeList.Add(new Employee()
{ Name = "Robert Johnson", Position = PositionEnum.Marketeer });
EmployeeList.Add(new Employee()
{ Name = "David Williams", Position = PositionEnum.Mechanic });
}
}
XAML
<Window x:Class="WpfApp6.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:core="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:WpfApp6"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" >
<Window.Resources>
<!--Create list of enumeration values-->
<ObjectDataProvider x:Key="myEnum" MethodName="GetValues" ObjectType="{x:Type core:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type Type="local:PositionEnum"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<DataGrid x:Name="MyDataGrid"
AutoGenerateColumns="False"
HorizontalAlignment="Left"
VerticalAlignment="Top"
RowHeaderWidth="0" >
<DataGrid.Columns>
<DataGridTextColumn
Binding="{Binding Name}"
Header="Name" />
<DataGridComboBoxColumn
Header="Order Status"
SelectedItemBinding="{Binding Position}"
ItemsSource="{Binding Source={StaticResource myEnum}}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
认为你需要给自己熟悉的。式和使用,作为一个基础,建立这样的应用。