2012-08-29 69 views
0

我有一个DataGridComboBoxColumn一个DataGrid和我想将它结合含有唯一的选择 “A”, “B” 的静态源, “C”绑定DataGridComboBoxColumn到的静态源

电流XAML:

<DataGridComboBoxColumn x:Name="ControlOption" Header ="ControlOption" Width="100" 
    SelectedValueBinding="{Binding Operation}" 
    SelectedItemBinding="{Binding Choices}" 
    ScrollViewer.CanContentScroll="True" 
    ScrollViewer.VerticalScrollBarVisibility="Auto" 
    IsReadOnly="True" 
    CanUserResize="True"> 

    <DataGridComboBoxColumn.ElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Choices}" /> 
     </Style> 
    </DataGridComboBoxColumn.ElementStyle> 
    <DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Choices}" /> 
     </Style> 
    </DataGridComboBoxColumn.EditingElementStyle> 
    <DataGridComboBoxColumn.ItemsSource> 
     <col:ArrayList> 
      <sys:String>AVS</sys:String> 
      <sys:String>DB</sys:String> 
      <sys:String>AVS_DB</sys:String> 
     </col:ArrayList> 
    </DataGridComboBoxColumn.ItemsSource> 

</DataGridComboBoxColumn> 

请让我知道代码隐藏会是什么样子:为贯彻落实DataGridComboBox目前我使用的代码隐藏为:

_ds = new DataSet(); 
DataTable table = new DataTable(); 
_ds.Tables.Add(table); 
DataColumn c1 = new DataColumn("IsActive", typeof(bool)); 
table.Columns.Add(c1); 
DataColumn c2 = new DataColumn("DataGridTextBox_QCList1", typeof(string)); 
table.Columns.Add(c2); 
DataColumn c3 = new DataColumn("DataGridTextBox_QCSummary", typeof(string)); 
table.Columns.Add(c3); 
DataColumn c4 = new DataColumn("Choices", typeof(string)); 
table.Columns.Add(c4); 
datagrid.ItemsSource = _ds.Tables[0].DefaultView; 

什么样的变化,我需要作出使填充datagridcombobox(基本的问题是,我连看到一个下拉菜单)

回答

0

如果使用DataTable作为ItemsSource没有办法为DataGrid必要的影响知道给定列只有有限的值是可能的,因此它只会为字符串列生成DataGridTextColumns

可以挂钩事件AutoGeneratingColumn,通过如果正在生成所关注的列中的事件参数检查,并改变在所述事件参数的Column与各自的结合和ItemsSourceDataGridComboBoxColumn

+0

然后,我可以将DataGridComboBox列单独绑定到静态源? – Ashutosh