Я использую SL4 и версию RIA Services, выпущенную одновременно с SL4 (середина апреля 2010 г.).Проблема с RejectChanges() с услугами RIA и Silverlight 4
У меня есть datagrid, связанный с PagedCollectionView, который обертывает EntitySet, возвращаемый службами RIA, то есть 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>
Внутри преобразователя значения, если Перечислимое значение связанного имущества совпадает с параметром преобразователя, преобразователь возвращает истину, иначе она возвращает ложь.
Любые идеи о том, как исправить это?