2010-07-22 1 views
1

Я использую 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> 

Внутри преобразователя значения, если Перечислимое значение связанного имущества совпадает с параметром преобразователя, преобразователь возвращает истину, иначе она возвращает ложь.

Любые идеи о том, как исправить это?

ответ

1

Я был на правильном пути, когда я подозревал, что проблема связана с наличием нескольких двусторонних привязок к одному и тому же свойству, но отказ был фактически в методе ConvertBack моего конвертера значений EnumToBool. (Упс!) Мне нужно было изменить его, чтобы вернуть DependencyProperty.UnsetValue, когда значение false. Теперь все отлично работает!

 Смежные вопросы

  • Нет связанных вопросов^_^