我有一个数据网格,我有两列month(值:1 2 3 4 5 6 7 8 9 10 1112和月份类型(值1,2,3)四分之一 如何将月份类型组合框的值添加到?选择如何将值添加到datagridcombobxcolumn?
在我的数据实体一个月类型被定义为
公共字节MonthTypes;
我有一个数据网格,我有两列month(值:1 2 3 4 5 6 7 8 9 10 1112和月份类型(值1,2,3)四分之一 如何将月份类型组合框的值添加到?选择如何将值添加到datagridcombobxcolumn?
在我的数据实体一个月类型被定义为
公共字节MonthTypes;
您可以在DataGrid中使用DataGridComboBoxColumn和的ItemsSource设置为您的值列表
<DataGridComboBoxColumn Header="My header"
SelectedValueBinding="{Binding Value, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding ListOfValues}"/>
假设这是你的模型:
public class Model : INotifyPropertyChanged
{
int _quarter;
public int Quarter { get { return _quarter; } set { _quarter = value; RaisePropertyChanged("Quarter"); } }
int _month;
public int Month { get { return _month; } set { _month = value; RaisePropertyChanged("Month"); } }
public event PropertyChangedEventHandler PropertyChanged;
internal void RaisePropertyChanged(string propname)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propname));
}
}
并且在视图模型一个ObservableCollection
ObservableCollection<Model> _models;
public ObservableCollection<Model> Models { get { return _models; } set { _models = value; RaisePropertyChanged("Models"); } }
可以使用DataGridTemplateColumn
,类似于下面的XAML:
<DataGrid DataContext="{Binding}" ItemsSource="{Binding Models}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Month, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<sys:Int32>1</sys:Int32>
<sys:Int32>2</sys:Int32>
<sys:Int32>3</sys:Int32>
<sys:Int32>4</sys:Int32>
<sys:Int32>5</sys:Int32>
<sys:Int32>6</sys:Int32>
<sys:Int32>7</sys:Int32>
<sys:Int32>8</sys:Int32>
<sys:Int32>9</sys:Int32>
<sys:Int32>10</sys:Int32>
<sys:Int32>11</sys:Int32>
<sys:Int32>12</sys:Int32>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Quarter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<sys:Int32>1</sys:Int32>
<sys:Int32>2</sys:Int32>
<sys:Int32>3</sys:Int32>
<sys:Int32>4</sys:Int32>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
别忘了:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
当然,请注意,您也可以将ComboBox ItemsSource绑定到Enum。