1

我想以编程方式在 DataGrid 中填充 ComboBox,但它不起作用。这是 XAML 代码:

<DataGridTemplateColumn 
                    CellStyle="{StaticResource DataGridColumnContentCenter}"
                    local:DataGridUtil.Name="ComboBoxCol01"
                    x:Name="ComboBoxCol01"
                    Header="Maschine"
                    SortMemberPath="ComboBoxCol01"
                    IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox DisplayMemberPath="@name"
                                      IsSynchronizedWithCurrentItem="False"
                                      SelectedIndex="{Binding ComboBoxCol01}"
                                      IsReadOnly="True"
                                      IsEditable="True"
                                      IsDropDownOpen="False"
                                      IsHitTestVisible="True"
                                      Width="104"
                                      Loaded="ComboBoxCol01_Loaded">
                            </ComboBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

通过 Loaded 事件,我想填充 ComboBox:

private void ComboBoxCol01_Loaded(object sender, RoutedEventArgs e)
    {
        List<string> myList = new List<string>();
        myList.Add("item1");
        myList.Add("item2");
        myList.Add("item3");
        myList.Add("item4");

        ComboBox curComboBox = sender as ComboBox;
        curComboBox.ItemsSource = myList;
    }

另一个版本也不起作用:

private void ComboBoxCol01_Loaded(object sender, RoutedEventArgs e)
    {
        ComboBox curComboBox = sender as ComboBox;
        curComboBox.Items.Add("item1");
        curComboBox.Items.Add("item2");
        curComboBox.Items.Add("item3");
        curComboBox.Items.Add("item4");
    }

DataGrid 中的组合框包含 4 个空项。空意味着没有“item1”......

我在这里做错了什么?

4

1 回答 1

2

不能命名你的组合框吗?然后添加项目?

<DataGridTemplateColumn 
                    CellStyle="{StaticResource DataGridColumnContentCenter}"
                    local:DataGridUtil.Name="ComboBoxCol01"
                    x:Name="ComboBoxCol01"
                    Header="Maschine"
                    SortMemberPath="ComboBoxCol01"
                    IsReadOnly="True">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <ComboBox **x:Name="cboCol1"**
                                      DisplayMemberPath="@name"
                                      IsSynchronizedWithCurrentItem="False"
                                      SelectedIndex="{Binding ComboBoxCol01}"
                                      IsReadOnly="True"
                                      IsEditable="True"
                                      IsDropDownOpen="False"
                                      IsHitTestVisible="True"
                                      Width="104"
                                      Loaded="ComboBoxCol01_Loaded">
                            </ComboBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>

private void ComboBoxCol01_Loaded(object sender, RoutedEventArgs e)
    {
        cboCol1.Items.Add("item1");
        cboCol1.Items.Add("item2");
        cboCol1.Items.Add("item3");
        cboCol1.Items.Add("item4");
    }
于 2012-05-10T14:09:09.900 回答