【问题标题】:Binding a DataGridComboBoxColumn to s static Source将 DataGridComboBoxColumn 绑定到静态源
【发布时间】:2012-08-29 08:39:46
【问题描述】:

我有一个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 产生必要的影响(基本问题是,我什至没有看到下拉菜单)

【问题讨论】:

    标签: c# wpf xaml datagridcomboboxcolumn


    【解决方案1】:

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

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

    【讨论】:

    • 然后我可以将 DataGridComboBox 列单独绑定到静态源吗?
    猜你喜欢
    • 2011-09-05
    • 2011-07-10
    • 1970-01-01
    • 2011-12-21
    • 2020-09-27
    • 2018-03-12
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多