2015-11-29 2 views
0

Я использую WPF MVVM DataGrid, а один из столбцов является эквивалентом DataGridComboBoxColumn, но из DataGridTemplateColumn. Сам DataGrid привязан к одному объекту, а столбец ComboBox привязан к отдельному.Как получить значения строк с помощью DataGridTemplateColumn, связанных с различными ItemSource

код XAML является:

<DataGrid Grid.Column="0" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding ItemNamesSetting}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Item1" Binding="{Binding Path=OriginalItemName}" /> 
     <DataGridTextColumn Header="Item2" Binding="{Binding Path=FinalItemName}" /> 
     <DataGridTemplateColumn Header="Attribute"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <ComboBox ItemsSource="{Binding DataContext.AttributesBindingList, ElementName=ThirdStepTab}" DisplayMemberPath="PropName" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
     <DataGridTextColumn Header="Item3" Binding="{Binding Path=Separatopr}" /> 
    </DataGrid.Columns> 
</DataGrid> 

Вопрос заключается в том, как я могу получить полные данные строки? Я планирую иметь одну кнопку «Сохранить», которая будет отправлять данные в базу данных, и мне нужно получить данные в текстовых столбцах + данные в ComboBox из разных наших рядов. Есть ли способ сделать это?

спасибо.

+0

Вам не нужно брать данные из пользовательского интерфейса, он переплетен своих свойства .... – Spawn

ответ

0

Вам необходимо связать имущество SelectedItem от DataGrid в вашей модели MVVM. Кроме того, один из соответствующего свойства зрения модели должны связываться с Combobox SelectedValue

<DataGrid Grid.Column="0" AutoGenerateColumns="False" CanUserAddRows="False" ItemsSource="{Binding ItemNamesSetting}" SelectedItem="{Binding VMPropertyName}" > 
     <DataGrid.Columns > 
      <DataGridTextColumn Header="Item1" Binding="{Binding Path=OriginalItemName}" /> 
      <DataGridTextColumn Header="Item2" Binding="{Binding Path=FinalItemName}" />           
      <DataGridTemplateColumn Header="Attribute"> 
             <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <ComboBox ItemsSource="{Binding DataContext.AttributesBindingList, ElementName=ThirdStepTab}" DisplayMemberPath="PropName" SelectedValue="{Binding PropertyOfVM}" /> 
       </DataTemplate>       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTextColumn Header="Item3" Binding="{Binding Path=Separatopr}" /> 
Смежные вопросы