MVV 패턴을 사용하여 내 WPF 응용 프로그램에서 탐색을 구현하고 싶습니다. 다음 ViewModels 존재 :WPF datatemplates 및 viewModel의 자동 생성 객체
- MainViewModel을 : 리본을
- ConsignorViewModel 함유 애플리케이션 내 "프레임"가진 "아이"보기는 "프레임"
- RecipientViewModel 안에 표시 할 : : 또 다른 "아이"보기 ...
내가 그렇게 App.xaml에 선언 DataTemplates를 사용, WPF는 "프레임"에 표시되어야하는보기를 결정하게하려면
<Application x:Class="MyProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:viewModels="clr-namespace:MyProject.ViewModels"
xmlns:views="clr-namespace:MyProject"
StartupUri="MainWindow.xaml">
<Application.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
<DataTemplate DataType="{x:Type viewModels:ConsignorViewModel}">
<views:ConsignorUC />
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels:RecipientViewModel}">
<views:RecipientUC />
</DataTemplate>
</Application.Resources>
</Application>
내 MainViewModel에는 ViewModel (내 기본 클래스) 유형의 "CurrentViewModel"속성이 있습니다. ConsignorViewModel과 RecipientViewModel은 ViewModel입니다.
ConsignorViewModel보기는 "사용자 정의"입니다 (창과 리본이 작동하지 않음).
<UserControl x:Class="MyProject.ConsignorUC"
...>
<UserControl.DataContext>
<local:ConsignorViewModel />
</UserControl.DataContext>
<Grid>
...
<TextBox Name="searchterm" Margin="10,10,1,1" TextWrapping="Wrap" Text="{Binding SearchTerm, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" />
...
</Grid>
</Grid>
</UserControl>
자식보기에서 양방향 데이터 바인딩이 작동하지 않습니다. 내가 뭐 놓친 거 없니? ConsignorViewModel이 usercontrol에 바인딩되어야한다고 말하는 것은 잘못입니까?
업데이트 나는 솔루션을 문제를 발견,하지만했습니다 응용 프로그램을 시작할 때, 새로운 MainViewModel 개체가 만들어집니다. 그럼 내가 말하노니
currentViewModel = new ConsignorViewModel();
이제 내 자식보기는 ConsignorUC입니다. 새로운 ConsignorUC가 생성되면, ConsignorViewModel의 새로운 객체가 생성됩니다. 그래서 ConsignorViewModel의 다른 객체들을 가지고 있어야하지만, 하나만 가져야합니다.
왜 제목을 변경 했습니까? 귀하의 질문에 여러 스레드에 대해서는 아무것도 없으므로 제목이 약간 혼란 스럽습니다. – dymanoid
죄송합니다. 다른 "스레드"가 있다고 생각합니다. 그럴 것 같지 않습니다. 새로운 제목이 더 나은 것이기를 바랍니다. – mosquito87