2012-05-10 5 views
1

Я хотел бы заполнить ComboBox в DataGrid программно, но он не работает. Это код XAML:установить элементы ComboBox в DataGridTemplateColumn программно

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

через нагруженного события я хотел бы, чтобы заполнить 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"); 
    } 

ComboBoxes в 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"); 
    } 
Смежные вопросы