【问题标题】:How to add values to datagridcombobxcolumn?如何向 datagridcombobxcolumn 添加值?
【发布时间】:2017-07-26 00:11:32
【问题描述】:

我有一个数据网格,其中我有两列月份(值:1 2 3 4 5 6 7 8 9 10 1112 和月份类型(值 1、2、3)季度。 如何将值添加到月份类型组合框以进行选择?

在我的数据实体中,月份类型定义为

公共字节 MonthTypes;

【问题讨论】:

    标签: wpf mvvm combobox datagrid entity


    【解决方案1】:

    您可以在 DataGrid 中使用 DataGridComboBoxColumn 并将 ItemsSource 设置为您的值列表。

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

    【讨论】:

      【解决方案2】:

      假设这是您的模型:

      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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 2012-11-08
        • 2019-08-13
        • 1970-01-01
        相关资源
        最近更新 更多