0

aDataGridがあり、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の入力に必要な影響を与えるために、どのような変更を加える必要がありますか(基本的な問題は、ドロップダウンが表示されないことです)

4

1 に答える 1

0

DataTableをとして使用する場合、特定の列に対して可能な値の量が限られていることを知るItemsSource方法がないため、文字列列に対してのみ生成されます。DataGridDataGridTextColumns

イベントをフックし、AutoGeneratingColumn対象の列が生成されているかどうかをイベント引数で確認し、イベント引数のをそれぞれのバインディングとセットを使用してに変更ColumnできDataGridComboBoxColumnますItemsSource

于 2012-08-29T09:20:15.920 に答える