2011-01-21 4 views
7

바인딩이 같은 코드를 가지고 :WPF 내 애플 리케이션 중 하나에서 기본 모드

<ProgressBar Grid.Column="0" Grid.Row="0" HorizontalAlignment="Stretch" Height="27" Margin="5,0,5,0" Maximum="{Binding TabuProgressEnd}" Value="{Binding TabuProgress}" /> 

나는이 모든 것이 괜찮 테스트했지만, 제 의뢰인은 VS에서이를 열고 실행할 때이 코드에서 예외가 발생했습니다 동안 :

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll 

Additional information: A TwoWay or OneWayToSource binding cannot work on the read-only property 'TabuProgress' of type 'TSPLib.TabuEngine'. 

보통 나는이 사기의 일종입니다 생각,하지만 난 사람이 "모드 = 쪽만"명시 적으로 도움이 코딩 및 제작에 대해 아무 생각이 없다는 것을 알고있다. 기본 바인딩 모드가 다른 컴퓨터에서 어떻게 다른지 어떻게 가능합니까? 명시 적으로 OneWayMode을 설정하지 않으면 예외가 발생한다, 그래서 ProgressBar에서

+0

이것은 프레임 워크 버전 문제 같은 소리에 모습을 보는 것도 흥미로울 것이다. 기본 바인딩 모드가 변경된시기를 잘 모르겠지만 서비스 팩 (또는 핫픽스) 중 하나에있을 수 있습니다. 수년에 걸쳐 이러한 이상한 변화가 몇 번 있었고 추적하기가 어렵습니다. 어떤 버전을 타겟팅하고 있습니까? –

+0

Visual Studio 2010과 함께 설치되는 Net Framework 4.0. 확신 할 수는 없지만 클라이언트가 이틀 전에 VS Pro 평가판을 설치했기 때문에 새로운 내용 일 수 있습니다. 어쩌면 그것은 Sp1과 같습니다. – kubal5003

답변

4

Value 속성은 기본적으로 TwoWay 결합한다. 그러나 나는 그것이 당신의 기계에서 일어나지 않는 이유를 설명 할 수 없다. .NET 버전 4.0, 3.5 및 3.0 리플렉터를 사용하여 시도하고 기본 연결 모드가 잠시 동안 변경되지 않은 것을 알 수 있습니다. 당신이 반사경 설치 한 경우

, (RangeBase에서 상속)이 있고 valueProperty가 시스템

public static readonly DependencyProperty ValueProperty = 
    DependencyProperty.Register(
     "Value", 
     typeof(double), 
     typeof(RangeBase), 
     new FrameworkPropertyMetadata(
      0.0, 
      FrameworkPropertyMetadataOptions.Journal | 
      FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
      new PropertyChangedCallback(RangeBase.OnValueChanged), 
      new CoerceValueCallback(RangeBase.ConstrainToRange)), 
     new ValidateValueCallback(RangeBase.IsValidDoubleValue)); 
+0

답장을 보내 주셔서 감사합니다. 먼저 DP 메타 데이터에 기본 바인딩 모드를 설정할 수 있다는 것을 배웠습니다. 내 프레임 워크에서 위의 코드를 확인하고 또한 BindsTwoWayByDefault가 포함되어 있습니다. 이건 이상해.. – kubal5003

관련 문제