2012-04-10 1 views
0

Как заполнить datagrid, когда столбец datagrid является ComboBox. В следующем коде мои столбцы не заполняются ......., но comboBoxes содержат некоторые элементы.привязка данных в XAML на основе MVVM patern

образец код.

<Window x:Class="ComboBox_Test.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <DataGrid ItemsSource="{Binding First}" AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="177,60,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200"> 
     <DataGrid.Columns> 
     <DataGridTemplateColumn Header="WH Code" Width="70"> 
       <DataGridTemplateColumn.CellEditingTemplate> 
        <DataTemplate> 
         <ComboBox Height="22" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.Last}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellEditingTemplate> 
    </DataGridTemplateColumn>` </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

ответ

0
<ComboBox ItemsSource="..." SelectedItem="{Binding WHCode, Mode=TwoWay}" /> 

Это будет выбрать COMBOBOX-элемент (если он найден), что соответствует WHCode свойства текущего элемент-данных. Он также позволит combobox обновлять значение модели, поскольку пользователь обновляет выбор.

Я не понимаю, почему вы хотите связать combobox с той же коллекцией, что и datagrid. Я бы, вероятно, создал свойство WHCodes на модели вида и использовал Path=DataContext.WHCodes (или что-то подобное), чтобы он заполнил поле со списком из набора «WH Codes».

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