2009-07-15 13 views
1

IsEditable 속성을 true로 설정하여 콤보 상자 텍스트에 바인딩하려고합니다. 텍스트에 바인딩 된 내 viewmodel 속성이 있습니다.Wpf 콤보 상자 텍스트 속성 바인딩 문제

콤보 박스의 텍스트에 입력 된 텍스트의 유효성을 검사하고 사용자가 입력하는 일부 값을 제한하려고합니다. 따라서 일부는 허용되고 일부는 허용되지 않으며 콤보 박스를 다시 설정해야합니다. 그것의 오래된 가치.

뷰 모델에서이 작업을 수행하고 내보기 모델에서 내 텍스트 속성을 이전 값으로 설정하려고했거나 변경 사항을 무시하고 속성이 변경되었음을 알았지 만 내게는 그렇게 될 것입니다. 텍스트를 이전 값으로 새로 고치지 않습니다.

이것은 콤보 상자가 편집 가능하고 텍스트 캐럿이 있고 콤보 상자의 텍스트 어딘가에 초점을 맞추기 때문에 발생합니다.

기본적으로 편집하는 동안 콤보 상자에서 일부 입력을 제한하면 이전 텍스트로 다시 새로 고침하고 싶습니다. 누구나 ViewModel을 통해 텍스트를 이전 값으로 재설정 할 수있는 아이디어가 있습니다. 미리 감사드립니다!

답변

1

답장을 보내 주셔서 감사합니다. 하지만 나는 그것을 대신 작동시키지 않을 수있다. 나는 자신의 UserControl을 만들었다.이 UserControl은 콤보 박스 위에 오버레이 된 텍스트 박스를 구성하고, 나의 필요를 충족시키기 위해이 두 컨트롤을 조작한다. 간단한 문제를 해결하기 위해 먼 길을가는 것이지만 결국 끝납니다.

0

바인딩 할 viewmodel 속성이 DependencyProperty로 생성 되었습니까? 이것은 아마도 사용자가 겪고있는 문제 일 것입니다. Two-way binding in WPF

종속성 속성을 만들지 않으려면 INotifyProperty를 구현하고 변경된 속성 변경 이벤트에서 수동으로 업데이트해야합니다.

+0

종속성 속성을 사용하고 INotifyProperty가 변경되었습니다. 둘 다 작동하지 않았다. 콤보 상자의 Text 속성에 대한 바인딩은 TwoWay입니다. –

+0

여기서 abouts는 사용자 입력의 유효성 검사를 수행하고 있습니까? –

+0

dep 프로퍼티의 onpropertychanged 콜백에서 수행했습니다. 그리고 뷰 모델의 텍스트 속성 설정자에서 텍스트의 유효성을 검사하는 다른 메서드를 호출하여이 작업을 수행했습니다. –

0

저는 이것이 WPF의 '버그'때문에 setter의 속성 값을 변경하면 UI가 새로 고쳐지지 않기 때문이라고 생각합니다. UI가 this arcticle으로 새로 고침되도록하는 IdentityConverter을 구현하여이를 해결할 수 있습니다.

+0

나는 여기에 제안 된 것을 시도했지만, 나의 성기에 대해서는 컨트롤이 기사에서 언급 한 것처럼 포커스를 잃을 때만 작동한다. 어떤 행동이 필요하지 않습니다. –