2017-03-06 13 views

Antwort

0

Sie eine DataGridComboBoxColumn in Ihrem Datagrid verwenden können und die Itemssource in der Liste der dich Wertes

<DataGridComboBoxColumn Header="My header" 
         SelectedValueBinding="{Binding Value, UpdateSourceTrigger=PropertyChanged}" 
         ItemsSource="{Binding ListOfValues}"/> 
0

Unter der Annahme, dass dies Ihr Modell:

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)); 
    } 
} 

und es gibt eine ObservableCollection in der Ansicht Modell

ObservableCollection<Model> _models; 
    public ObservableCollection<Model> Models { get { return _models; } set { _models = value; RaisePropertyChanged("Models"); } } 

Sie die DataGridTemplateColumn verwenden können, ähnlich den folgenden 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> 

nicht vergessen:

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

Natürlich können Sie die ComboBox ItemsSource auch an ein Enum binden.

Verwandte Themen