2012-04-10 40 views
0

如何在datagrid列爲ComboBox時填充數據網格。 在下面的代碼中我的列沒有被填充......但組合框包含一些項目。基於MVVM模板的XAML數據綁定

示例代碼。

<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}" /> 

這將選擇組合框項目(如果發現),其對應於當前數據項的屬性WHCode。它也將允許組合框在用戶更新選擇時更新模型值。

我不明白你爲什麼要將combobox綁定到與datagrid相同的集合。我可能會在視圖模型上創建一個WHCodes屬性,並使用Path=DataContext.WHCodes(或類似的東西),使其從一組「WH代碼」中填充組合框。