RejectChanges()RIA服务和Silverlight 4存在问题

RejectChanges()RIA服务和Silverlight 4存在问题,silverlight,silverlight-4.0,wcf-ria-services,Silverlight,Silverlight 4.0,Wcf Ria Services,我正在使用SL4以及与SL4同时发布的RIA服务版本(2010年4月中旬) 我有一个绑定到PagedCollectionView的datagrid,该视图包装RIA服务返回的EntitySet,即context.MyEntities。我不允许直接在网格中编辑。相反,我有一个单独的“更新”面板(UserControl),其中包含链接到网格中选定项的控件 在做了几次更改之后,我尝试调用context.RejectChanges()几乎所有内容都恢复到原始状态,包括关联实体上的属性。问题是我在“更新”

我正在使用SL4以及与SL4同时发布的RIA服务版本(2010年4月中旬)

我有一个绑定到PagedCollectionView的datagrid,该视图包装RIA服务返回的EntitySet,即context.MyEntities。我不允许直接在网格中编辑。相反,我有一个单独的“更新”面板(UserControl),其中包含链接到网格中选定项的控件

在做了几次更改之后,我尝试调用context.RejectChanges()几乎所有内容都恢复到原始状态,包括关联实体上的属性。问题是我在“更新”面板中有一组3个单选按钮,它们绑定到关联实体上的枚举属性。我使用值转换器根据枚举属性的值设置每个按钮。所有三个单选按钮的绑定都设置为双向绑定。出于某种原因,context.RejectChanges()会还原对该属性的部分更改,但会错过对所选项目的更改。即使在进行更改后移到另一行,移回更改的行,然后拒绝更改,也会发生这种情况

(问题可能与单击单选按钮会影响两个绑定有关,即未选中的单选按钮和选中的单选按钮。这只是一个理论…)以下是单选按钮的xaml:

<StackPanel Orientation="Horizontal"> 
    <RadioButton x:Name="rbUnmodified" Content="Unmodified" Margin="3" IsChecked="{Binding ReviewStatus, Mode=TwoWay, Converter={StaticResource enumBoolConverter}, ConverterParameter=Unmodified}" /> 
    <RadioButton x:Name="rbInProgress" Content="In Progress" Margin="3" IsChecked="{Binding ReviewStatus, Mode=TwoWay, Converter={StaticResource enumBoolConverter}, ConverterParameter=InProgress}" /> 
    <RadioButton x:Name="rbResolved" Content="Resolved" Margin="3" IsChecked="{Binding ReviewStatus, Mode=TwoWay, Converter={StaticResource enumBoolConverter}, ConverterParameter=Resolved}" /> 
</StackPanel>

在值转换器内部,如果绑定属性的枚举值与转换器参数匹配,则转换器返回true,否则返回false


关于如何解决这个问题,有什么想法吗?

当我怀疑问题与对同一属性进行多个双向绑定有关时,我的思路是正确的,但故障实际上发生在EnumToBool值转换器的ConvertBack方法中。(哎哟!)当值为false时,我需要修改它以返回DependencyProperty.UnsetValue。现在一切都很好