2012-04-10 9 views
0

DataGridカラムがComboBoxの場合、DataGridをどのように埋めるか。 次のコードでは、列が塗りつぶされていませんが、コンボボックスにはいくつかの項目が含まれています。MVAM paternに基づくXAMLでのデータバインディング

サンプルコード現在のデータ項目のWHCodeプロパティに対応

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

(見つかった場合)これは、コンボボックス項目を選択します。また、ユーザーが選択を更新すると、コンボボックスがモデル値を更新できるようになります。

コンボボックスをデータグリッドと同じコレクションにバインドする理由を理解できません。私はおそらくWHCodesプロパティをビューモデルに作成し、Path=DataContext.WHCodes(または同様のもの)を使用して、「WHコード」のセットからコンボボックスを作成するようにします。