我有DataGrid
DataGridComboBoxColumn
,我想将其绑定到仅包含选项“A”,“B”,“C”的静态源
当前的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 :(得分:0)
如果您使用DataTable
作为ItemsSource
,则DataGrid
无法知道给定列只能使用有限数量的值,因此它只会为字符串列生成DataGridTextColumns
。
您可以挂钩事件AutoGeneratingColumn
,通过事件参数检查是否正在生成感兴趣的列,并将事件参数中的Column
更改为DataGridComboBoxColumn
绑定和ItemsSource
设置。