2010-06-19 3 views
0

내 Wpf-App (MVVM)에있는 객체에 바인딩 된 contentcontrol을 가지고 있으며 객체의 속성을 텍스트 상자에 표시하므로 사용자가 속성 값을 편집 할 수 있습니다. GoF의 명령 패턴으로 실행 취소/다시 실행 기능을 구현하려고합니다. 이 경우 나는 명령을 만들어 내 undomanager에 설정할 수있는 지점이 필요합니다. 제 아이디어는 제출 버튼을 추가하는 것이 었습니다. 단추를 누르면 텍스트 상자 (내 속성)의 원본을 업데이트하고 변경 내용을 취소 할 수 있도록 명령 개체를 만듭니다 (개체의 이전 상태와 새 상태 저장). But : - 제출 버튼을 사용하려면 텍스트 상자의 UpdateSourceTrigger를 명시 적으로 설정해야합니다. 내 소스를 업데이트하고 싶다면 내보기에서 컨트롤을 참조해야합니다. 이는 배웠던만큼 좋지 않습니다. 내가 어떻게 할 수 있니? MVVM을 사용하면 SubmitButton에 대해 명령 (WPF 명령, 실행 취소 다시 실행 명령이 아닌)을 만들어야하지만 텍스트 상자를 참조하지 않고 해당 명령의 속성에 변경 사항을 적용하는 방법을 볼 수 없습니다 (추가 헤이는 datatemplates를 통해 생성됩니다.)).WPF MVVM UpdateSourceTrigger = Excplict

감사합니다 월터

답변

0

나는 당신의 TextBox 컨트롤이 ViewModel 클래스의 속성에 바인딩 가정합니다. 제출 버튼을 ViewModel Command에 바인딩하면 해당 명령을 Command Pattern Collection에 추가하고 ViewModel 속성 중 일부를 변경하면 Textbox 컨트롤의 값도 업데이트됩니다. 이제 Textbox은 값이 변경 될 때 값을 바꿀 때 ViewModel 클래스는 INotifyPropertyChanged 인터페이스를 구현하고 해당 속성의 이름을 인수로 사용하여 속성 설정자에서 PropertyChanged 이벤트를 발생시켜야합니다.

+0

ViewModel 클래스의 명령에서 개체의 현재 상태를 저장하려면 TextBox 컨트롤에 대한 참조가 필요하지 않습니다. 뷰가 사실 ViewModel에 바인딩되어 있기 때문에 ViewModel 클래스 자체에서 속성에 직접 액세스 할 수 있습니다. – decyclone