텍스트 상자의 텍스트가 변경 될 때 정적 바인딩 된 속성의 값을 업데이트 할 수 없습니다.

콘라드 빌터 스텐

다음 마크 업이 있습니다.

<TextBox x:Name="Address" 
         Text="{Binding 
                  Source={x:Static local:MainWindow.Boundie},
                  Path=SomeProp,
                  Mode=TwoWay}">
</TextBox>

뒤에있는 코드에는 이와 같은 정적 속성이 있습니다.

Boundie = new Something { SomeProp = "old" };

static Something Boundie { get; set; }

public class Something { public String SomeProp { get; set; } }

데이터 바인딩 된 텍스트 상자와 중단 점에 "new"를 입력하면 속성의 속성이 변경 될 것으로 예상했습니다. 사실이 아닙니다. 모드 를 잘못 사용 하고 있습니까? 아니면 TwoWay로 설정하는 것 외에 다른 작업이 필요 합니까? 아니면이 경우 접근 방식이 모두 부적절합니까?

방금 업데이트해야하는 경우 에서 GUI를 데이터 객체 구현 INotifyPropertyChanged그것을하는 것은 필수가 아닙니다. Sonhja가 제안했듯이 Boundie 속성 초기화를 올바른 지점에 배치하는 것이 중요합니다. 따라서 Boundie = new Something { SomeProp = "old" };정적 생성자에 삽입 하거나 InitializeComponent();호출 직전에 (공용 생성자에) 삽입해야합니다 .

이유는 간단하다 : 당신이 경우 Boundie = new Something { SomeProp = "old" }; InitializeComponent(); 호출, 바인딩이 이미 (그 순간에 널 (null) 임) Boundie 속성 값을 읽기 위해 노력하고 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관