2009-07-13 5 views
2

TextBox의 Text가 twoway 모드를 사용하는 속성에 데이터 바인딩되고 Text를 무언가로 설정하면 속성을 업데이트해야합니까? 컨트롤 안에 입력 할 때 내 속성이 업데이트되지만 코드에서 값을 설정할 때 업데이트되지 않습니다.textBox.Text를 설정해도 바인딩 된 twoway 속성이 업데이트되지 않습니까?

+0

당신이 우리에게 몇 가지 코드를 보여줄 수 :

여기 MVVM에 꽤 좋은 비디오 소개입니까? –

답변

3

바운드 Text 속성을 직접 수정하는 것은 바람직하지 않습니다. 코드에서 바인딩의 다른 쪽 끝을 설정하고 바인딩에서 컨트롤을 업데이트 할 수있게해야합니다.

Text 속성을 설정할 때 바운드 개체가 업데이트되는 경우 해당 지정자가 다른 이유로 변경된 바운드 개체의 결과 일 때를 감지하는 특별한 사례 코드가 필요합니다. 그렇지 않으면 당신은 무한 루프로 끝날 것입니다.

+0

질문은 프로그래밍 방식으로 데이터 바인딩을 추가/제거하는 일부 작업에서 비롯됩니다. 나는 코드에서 바인딩을 설정할 때마다, 내가 묶는 속성과 텍스트 상자를 빈 문자열로 설정한다는 것을 알게되었습니다. 데이터 바인딩을 다시 설정하면 텍스트 상자 안의 텍스트를 속성으로 설정하고 다른 방법으로 설정하지 않도록합니다. 왜 내가 처음부터 데이터 바인딩을 제거 할까? 속성이 지속적으로 업데이트되고 텍스트 상자에 포커스가있을 때 텍스트를 변경하지 않기를 바랍니다. – djcouchycouch

+0

아마도 질문 자체에 약간의 코드로 이러한 세부 정보를 포함해야 할 것입니다. – AnthonyWJones

0

텍스트 상자가 포커스를 잃을 때만 데이터를 커밋하기 때문입니다. Here은 다소 관련이있는 질문입니다.

1

텍스트 상자의 .Text 값을 설정하지 말아야합니다. 바인딩 할 속성의 값을 설정하십시오. :)

뷰 디자인을위한 Model-View-ViewModel 방법에 대해 자세히 읽어 보는 것이 좋습니다. 이런 종류의 작업을 수행 할 때 명확한 분리를 유지합니다. 바인딩을 새로 고치는 포커스에 대해이 "버그"가 표시되는 이유는 대부분 이런 종류의 것이 적절하지 않기 때문입니다. MVVM on Channel 9

관련 문제