2011-12-14 83 views
1

我有一個DataGrid的WPF窗體。這個DG包含一個DataGridTemplateColumn,它包含一個ComboBox。當我點擊DG的新行並從組合框中選擇一個值,然後選項卡移動到下一列時,所選值不會在組合框列中保持可見。datagrid列不更新

但是,當我縮回時,正確的值顯示在組合框中。

當我關閉列時,如何保持顯示在組合框中的選定值?

這裏是我的comboxbox列XAML:

<DataGridTemplateColumn Header="Type" Width="160"> 
<DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding LocationType.Description, Mode=TwoWay}"/> 
    </DataTemplate> 
</DataGridTemplateColumn.CellTemplate> 

<DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
      <ComboBox Name="cboAddrtype" 
         ItemTemplate="{StaticResource dtAddrType}" IsSynchronizedWithCurrentItem="True" 
         ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}, AncestorLevel=1}, Path=DataContext.LocationTypesObject, Mode=OneTime}" 
         SelectedItem="{Binding Path=SelectedLocationType, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" 
         SelectedValue="{Binding Path=LocationTypeKey, Mode=TwoWay}" 
         SelectedValuePath="InternalKey" 
         Width="100" /> 

     </StackPanel> 

    </DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 

+0

爲什麼你有一個`SelectedItem`和`SelectedValue`?他們是設置相同屬性的不同方式。我建議擺脫`SelectedItem`因爲它通過引用來比較項目,而不是值,因爲你有一個`OneWay`綁定它。 – Rachel 2011-12-14 17:01:03

回答

1

CellTemplate要綁定LocationType.DescriptionCellEditingTemplate要綁定SelectedLocationTypeLocationTypeKey。我不確定你從ComboBox的綁定不會影響LocationType.Description

此外,SelectedLocationTypeLocationTypeKey不在DataTemplate的上下文中。您應該添加一個Source綁定屬性來獲取您的ViewModel。