RIA Services和Silverlight 4的RejectChanges()问题

时间:2010-07-22 00:56:16

标签: silverlight silverlight-4.0 wcf-ria-services

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

我有一个绑定到PagedCollectionView的数据网格,它封装了RIA Services返回的EntitySet,即context.MyEntities。我不允许直接在网格中编辑。相反,我有一个单独的“更新”面板(UserControl),其中的控件链接到网格的选定项目。

经过多次更改后,我尝试调用context.RejectChanges()。 几乎一切都恢复到原始状态,包括关联实体的属性。问题是我在“更新”面板中有一组3个单选按钮,它们绑定到关联实体上的枚举属性。我使用值转换器根据枚举属性的值设置每个按钮。所有三个单选按钮的绑定都设置为TwoWay绑定。出于某种原因,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>

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

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

当我怀疑问题与对同一属性进行多次双向绑定有关时,我处于正确的轨道上,但失败实际上是在我的EnumToBool值转换器的ConvertBack方法中。 (哎呀!)当值为false时,我需要修改它以返回DependencyProperty.UnsetValue。现在一切都很棒!