【问题标题】:RejectChanges() problem with RIA Services and Silverlight 4RIA 服务和 Silverlight 4 的 RejectChanges() 问题
【发布时间】:2010-07-22 00:56:16
【问题描述】:

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

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

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

(也许问题可能与单击单选按钮会影响两个绑定这一事实有关,即未选中的单选按钮和已选中的单选按钮。只是一个理论......)这是单选按钮:

<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。

关于如何解决这个问题的任何想法?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多