MVVM View 요소 업데이트
-
20-12-2019 - |
문제
MVVM 체계에 따라 앱이 있습니다. 위치와 ViewModels가 여러 개 있습니다. 내 메인 페이지에서는 선택한 요소의 정보로 정보로 업데이트하고자하는 TextBlock이 있습니다.
앱을 시작하면 MainviewModel에서 값을 삽입하여 바인딩을 테스트하여 모든 것이 여기에서 작동합니다. 코드가 다음과 같습니다.
<TextBlock Text="{Binding colorOfElement}" Grid.Row="1"/>
.
mainviewmodel의 코드
private string _colorOfElement;
public string colorOfElement
{
get
{
return _colorOfElement;
}
set
{
_colorOfElement = value;
NotifyPropertyChanged("colorOfElement");
}
}
.
......
colorOfElement = "Test";
.
이게 올바르게 표시됩니다. 사용자가 요소와 상호 작용하면 이벤트가 새 뷰 모델 내부에서 해고되면 여기에서는 mainviewmodel에 대한 참조가 있으므로 쉽게 문자열 colorofelement를 쉽게 업데이트 할 수 있습니다.
private MainViewModel mv;
......
public void MouseDown(ManipulationStartedEventArgs obj)
{
FrameworkElement MovingElement = (FrameworkElement)obj.OriginalSource;
Canvas canvas = FindParentOfType<Canvas>(MovingGear);
obj.ManipulationContainer = canvas;
obj.Handled = true;
testViewModel viewModel = (testViewModel)MovingElement.DataContext;
mv.colorOfElement = viewModel.model.Color;
}
.
이 함수가 실행되면 MainviewModel에 보내고 NotifyPropertyChanged가 해고됩니다. 그러나 뷰를 보여주는 응용 프로그램에서는 변수의 업데이트를 볼 수 없지만 변수가 변경됩니다. 이 바인딩 문제에 대한 모든 아이디어?
답변 DataContext를 테스트 했으므로 모든 작업이 일하고 있었기 때문에 공개 수업에있었습니다.
public class MainViewModel : ViewModelBase
.
여기에서는 기능을 활성화 할 수있는 INotifyPropertyChanged 인터페이스를 포함해야합니다. 따라서 간단한 해결책은이를 추가하고 얻는 것입니다 :
public class MainViewModel : ViewModelBase, INotifyPropertyChanged
.
다음가는 것이 좋습니다 :)
해결책
다음을 확인하십시오.
- DataContext는 mainviewmodel 의 올바른 인스턴스로 설정됩니다.
- mainviewModel은 inotifyPropertyChanged 인터페이스 를 구현합니다.
제휴하지 않습니다 StackOverflow