2010-11-19 4 views
0

У меня есть DataGrid, который привязан к списку с двумя свойствами.Связывание между двумя столбцами в DataGrid

Первый столбец в DataGrid - это DataGridTemplateColumn, и внутри него есть ComboBox.

Второй столбец в DataGrid - это DataGridTextColumn и привязан к конвертеру.

Всякий раз, когда я изменяю значение combobox в первом столбце, должен запускаться преобразователь второго столбца. Поэтому, основываясь на некоторых расчетах в преобразователе, я могу вернуть значение во вторую колонку

как это сделать?

ответ

0

Вы можете проложить маршрут через связанный источник, привязать выбранный элемент combobox к связанным данным и затем привязать выбранный объект к столбцу 2 с помощью конвертера. Выделите выбранный элемент между двумя столбцами, а для второго столбца используйте конвертер в привязке, чтобы он запускался.

ошибка исправленную копию пасты в колонке 2 связывания,

Что-то вроде этого,

Presenter/ViewModel 
class DataSource : INotifyPropertyChanged { 
    // raise PropertyChanged when required 
    public ObservableCollection<string> Columns1Values {get;set;} 
    // raise PropertyChanged when required 
    public string SelectedColumn1Value {get; set;} 
} 

Посмотреть

<dg:DataGrid 
    Name="sampleDG" 
    ItemsSource={Binding DataSourceObject}> 
    <dg:DataGridWidget.Columns> 
     <dg:DataGridTemplateColumn 
      Header="Column 1"> 
      <datagrid:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Label Content="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"/> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellTemplate> 
      <datagrid:DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <ComboBox 
         ItemsSource="{Binding Path=Column1, Mode=TwoWay}" 
         SelectedItem="{Binding Path=SelectedColumn1Value, Mode=TwoWay}" 
        /> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellEditingTemplate> 
     </dg:DataGridTemplateColumn> 
     <dg:DataGridTextColumn 
      Header="Column 2" 
      Binding="{Binding Path=SelectedColumn1Value, Converter={StaticResource selectedConverter}, Mode=TwoWay}}"> 
     </dg:DataGridTextColumn> 
    </dg:DataGridWidget.Columns> 
</dg:DataGrid> 
+0

Но как преобразователь будет получить срабатывает каждый раз, когда вы меняете выпадающий ? Каков этот путь привязки «Столбец» в DataGridTextColumn? – ksvimal

+0

Извините, моя ошибка (ошибка копирования вставки), столбец 2 должен быть привязан к SelectedColumn1Value, так как это член, который вам нужно разделить между столбцами, и, таким образом, когда связка Column1 обновляет его, его изменение приведет к вызову вашего конвертера для привязки столбца 2 , Для столбца 2 режим привязки может быть OneWay, если вы не собираетесь изменять выбор из столбца 2 в столбец 1. – whoisthis

+0

Было ли это полезно? – whoisthis

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