2013-09-26 2 views
0

나는 다음과 같은 반장 님에 추가 (확장 WPF 툴킷)을 DoubleTextbox 있습니다윈도우가 처음 표시 될 때 텍스트 상자가 값으로 업데이트되지 않는 이유

<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" FormatString="F2" Value="{Binding MyDoubleValue}" Maximum="100" Minimum=".0001" DefaultValue="1.0"/> 

을하고 MyDouble 값은 다음과 같이 정의된다 :

private double myDouble=1.0; 
public double MyDouble 
{ 
    get 
    { 
     return this.myDouble ; 
    } 

    set 
    { 
     if (Math.Abs(this.myDouble - value) > 0.0000000000001) 
     { 
      this.myDouble = value; 
      this.NotifyOfPropertyChange(() => this.MyDouble); 
     } 
    } 
} 

내가 응용 프로그램을 실행하고이 텍스트 상자에 대한 값을 볼 때, 그것은 비어,하지만 난 화살표를 사용하는 경우는 올바르게 MyDouble 가치를 발견 것을 의미한다 (2.0을 보여줍니다.

W 그것은 시작시 창에 그 가치를 보여주지 않습니까?

저는 caliburn 마이크로를 사용하고 있습니다.

답변

0

문제는 XAML에서 DefaultValue = "1.0"입니다. 제가 그것을 제거했을 때, 그것은 효과가있었습니다.

2

속성 이름이 올바르지 않습니다.

private double myDouble=1.0; 

따라서, NotifyOfPropertyChange 아직 MyDouble 요구되지 않았으며 WPF는 값에 대해 알고하지 않습니다 : 그것은 당신이 기본값을 사용하는 대신 MyDoubleValue

Value="{Binding MyDouble}" 
+1

아마도 오타였습니다. – Khan

+0

나는 그것을 의심하지 않는다. – Nitin

+0

그것은 타입이었다. MyDoubleValue를 변경했을 때 MyDoubleValue가 textbox의 값을 얻었 기 때문에 바인딩이 작동하는 것으로 나타납니다. – mans

1

의 MyDouble해야한다.

초기화 중에 ViewModel 또는 다른 곳의 생성자에서 값을 설정합니다 (속성을 통해 백커 필드 사용 안 함). 초기화 중

또는

전화 NotifyOfPropertyChange(() => this.MyDouble);.

+0

첫 x 째 Y 인딩 전에 특성에 값이 있으면 특성 변경 이벤트를 올릴 이유가 없습니다. 사실 객체 생성은 바인딩이 발생하기 전에 발생하므로 객체 생성 중에 발생하는 모든 이벤트는 다른 객체가 그 단계에서 그 객체에 가입하지 않기 때문에 보이지 않습니다. – mans