2010-07-22 4 views
1

SL4 (2010 년 4 월 중순)와 동시에 릴리스 된 RIA 서비스 버전과 SL4를 사용하고 있습니다.RIA Services 및 Silverlight 4 RejectChanges() 문제

RIA 서비스에서 반환 한 EntitySet (context.MyEntities)을 래핑하는 PagedCollectionView에 바인딩 된 DataGrid가 있습니다. 그리드에서 직접 편집하는 것을 허용하지 않습니다. 대신, 별도의 "업데이트"패널 (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> 

는 컨버터 다른 false를 반환, true를 돌려줍니다.

해결 방법에 대한 의견이 있으십니까?

답변

1

문제가 동일한 속성에 대한 양방향 바인딩이 여러 개있는 것과 관련이 있다고 의심했지만 실제로 EnumToBool 값 변환기의 ConvertBack 메서드에 오류가 발생했습니다. (으악!) 값이 false 일 때 DependencyProperty.UnsetValue를 반환하도록 수정해야했습니다. 이제 모든 것이 잘됩니다!

관련 문제