2012-05-10 102 views
1

我想以編程方式在DataGrid中填充ComboBox,但它不起作用。 這是XAML代碼:通過Loaded事件以編程方式在DataGridTemplateColumn中設置ComboBox項目

<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> 

我想,以填補組合框:

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」...

任何人都可以給我一個提示,我在做什麼錯在這裏?

回答

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"); 
    } 
相關問題