将DataGridComboBoxColumn绑定到s静态源

时间:2012-08-29 08:39:46

标签: c# wpf xaml datagridcomboboxcolumn

我有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时产生必要的影响(基本问题是,我甚至没有看到下拉列表)

1 个答案:

答案 0 :(得分:0)

如果您使用DataTable作为ItemsSource,则DataGrid无法知道给定列只能使用有限数量的值,因此它只会为字符串列生成DataGridTextColumns

您可以挂钩事件AutoGeneratingColumn,通过事件参数检查是否正在生成感兴趣的列,并将事件参数中的Column更改为DataGridComboBoxColumn绑定和ItemsSource设置。