2015-02-06 4 views
0

Я не понимаю, как привязка к DataGridComboBoxColumn работает правильно. My DataGrid TextColum отображает значение из моего RowEntries, но ComboBoxColumn не заполнен.Понять привязку DataGridComboBoxColumn Itemssource и SelectedItem

У меня есть ObservableCollection из RowEntryView имени RowEntries, которые являются производными:

public class DataTypes : RowEntryView 
{ 
    private string _value; 
    public string[] ValuesPossible {get; set; } 
    public string Value 
    { 
     get 
     { 
      return _value; 
     } 

     set 
     { 
      _value = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Value")); 
     } 
    } 
} 

Мои DatagridTextColum отображает значение переменной. Мой DataGridComboBoxColumn пуст. Значения возможных наполнено { "A", "B", "C"}, Значение заполняется "A"

<DataTemplate x:Name="myDataTemplate"> 
     <DataGrid RowHeight="30" VerticalContentAlignment="Center" x:Name="myDataGridMain" CanUserAddRows="False" AutoGenerateColumns="False" ItemsSource="{Binding RowEntries}" > 
     <DataGrid.Columns>  
     <DataGridTextColumn Width="4*" IsReadOnly="True" x:Name="dataGridColumnDescription" Header="Value" Binding="{Binding Value}"> 
     </DataGridTextColumn> 
     <DataGridComboBoxColumn Header="Type" ItemsSource="{Binding ValuesPossible}" SelectedItemBinding="{Binding Value}"></DataGridComboBoxColumn> 
       </DataGrid.Columns> 
        </DataGrid> 
       </DataTemplate> 

enter image description here

ответ

0

Тогда я предложил бы использовать DataGridTemplateColumn:

      <DataGridTemplateColumn Header="Type"> 
           <DataGridTemplateColumn.CellEditingTemplate> 
            <DataTemplate> 
             <ComboBox ItemsSource="{Binding ValuesPossible}" 
                SelectedItem="{Binding Value, UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></ComboBox> 
            </DataTemplate> 
             </DataGridTemplateColumn.CellEditingTemplate> 
           <DataGridTemplateColumn.CellTemplate> 
            <DataTemplate> 
             <TextBlock Text="{Binding}"></TextBlock> 
            </DataTemplate> 
           </DataGridTemplateColumn.CellTemplate> 
          </DataGridTemplateColumn> 
+0

Это работает .... Thx – nullxff

0

ItempsSource список элементов, Wand, который будет отображаться. SelectedItem (not selectedItemBinding) - ваш выбранный объект. В основном вам нужно иметь SelectedItem = "{Binding Value}". Теперь, чтобы иметь возможность уведомлять вас об изменениях каждого нового выбора, ваш объект должен реализовать INotifyPropertyChanged, а затем ваша привязка станет: SelectedItem = "{Binding Value, UpdateSourceTrigger = PropertyChanged, Mode = TwoWay}". Вы найдете множество примеров в сети.

+0

Спасибо за ваш ответ: SelectedItem не доступен на DataGridComboBoxColum и INotifychanged реализуется в RowEntryView – nullxff

Смежные вопросы