2011-06-24 46 views
2

我有定義爲這樣一個MVVM設計圖案數據網格:綁定WPF組合框內數據網格中MVVM不保存變化

<DataGrid Margin="10" Height="385" Width="1000" ItemsSource="{Binding Inspection.Details}" SelectedItem="{Binding SelectedDetail, Mode=TwoWay}" AutoGenerateColumns="False" CanUserAddRows="False" x:Name="grdDetails" CanUserSortColumns="True" HorizontalScrollBarVisibility="Visible" CanUserResizeColumns="True"> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn Header="Code" Width="120" SortMemberPath="MFGCode"> 
      <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
      <Grid> 
       <ComboBox FontSize="20" ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},Path=DataContext.MFGCodes}" DisplayMemberPath="Value" SelectedValuePath="Value" SelectedValue="{Binding MFGCode,Mode=TwoWay}"></ComboBox> 
      </Grid> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

組合框被正確填充,通過結合到視圖模型內的ObservableCollection。還有其他列(這裏沒有提供)正在綁定到視圖模型中定義的Inspection上的各種屬性。

對於初始加載,組合框正確地綁定到InspectionDetail上代表MFGCode的選定值。

唯一的問題是,當我更改組合框中的值時,新的SelectedValue未被保存到SelectedDetail的MFGCode屬性中,正如我期望的使用TwoWay綁定一樣。

我可以提供ViewModel代碼,因爲它會有幫助,只是問。

謝謝!

回答

5

試試這個

SelectedValue="{Binding MFGCode,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"