Связывание между двумя столбцами в DataGrid - PullRequest
0 голосов
/ 19 ноября 2010

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

Первый столбец в DataGrid - это DataGridTemplateColumn, внутри которого находится ComboBox.

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

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

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

1 Ответ

0 голосов
/ 19 ноября 2010

Вы можете направить его через связанный источник, привязать выбранный элемент списка со своими данными и затем привязать выбранный объект к столбцу 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;}
}

View

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