하나의 ViewModel과 두 개의 Views가 있습니다. ViewModel에서 View2로 어떻게 이동할 수 있습니까? Silverlight에서 ViewModel의 여러 뷰를 여는 데 PRISM을 사용해야한다고 읽었습니다. PRISM을위한 대안이 있습니까?silverlight에서 viewmodel의 한보기에서 다른보기로 이동하는 방법은 무엇입니까?
답변
viewmodel에서보기 논리를 사용하지 않는 것이 좋습니다. 귀하의 뷰 모델은 뷰에 대해 아무 것도 알지 못합니다. viewmodel이 탐색 할 시간임을 알리는 속성을 설정하는 것이 더 좋습니다.
뷰 모델 :
using System.ComponentModel;
namespace ViewModels
{
public class MyViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged == null) return;
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private bool _DoneDoingStuff;
public bool DoneDoingStuff
{
get
{
return _DoneDoingStuff;
}
set
{
if (_DoneDoingStuff != value)
{
_DoneDoingStuff = value;
NotifyPropertyChanged("DoneDoingStuff");
}
}
}
}
}
보기 : 다음은 예입니다
<navigation:Page
x:Class="Views.MyView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
xmlns:vm="clr-namespace:ViewModels">
<navigation:Page.Resources>
<vm:MyViewModel
x:Key="MyViewModelInstance" />
</navigation:Page.Resources>
<Grid
x:Name="LayoutRoot"
DataContext="{Binding Source={StaticResource MyViewModelInstance}}">
<i:Interaction.Triggers>
<ei:DataTrigger
Binding="{Binding DoneDoingStuff}"
Value="True">
<ei:HyperlinkAction
NavigateUri="AnotherPage.xaml" />
</ei:DataTrigger>
</i:Interaction.Triggers>
</Grid>
</navigation:Page>
사용 당신의 ViewModel에서
DoneDoingStuff
속성을 설정DataTrigger
와Binding
재산 및Value
속성을 "True"로 설정합니다.DataTrigger
은 viewmodel의DoneDoingStuff
이 true로 설정된 경우 트리거됩니다.이제 탐색을 위해 트리거 조치가 필요합니다. 이동하려는 페이지에
NavigateUri
속성이 설정된HyperlinkAction
속성을 사용하십시오.것은 System.Windows.Interactivity, System.Windows.Controls.Navigation 및 Microsoft.Expression.Interactions 당신의 참조에 어셈블리를해야합니다.
처음에는 너무 많은 것처럼 보일 수도 있지만 이제는보기 로직이 있어야합니다.
PRISM을 사용할 필요는 없지만 가장 좋을 수 있습니다.
내가 한 일은 (그리고 엉성함) 시작 화면에서 첫 번째보기를로드 할 탐색 프레임이있는 MainView 페이지를 갖는 것입니다. MainView는 UserControl이 아닌 Page이어야합니다. xaml에 uri 매핑이있는 탐색 프레임이 있어야하며 MainView 페이지의 코드 뒤에 공유/정적으로 선언 된 프레임이 있어야하고 프레임의로드 된 이벤트 (xaml에 있음)를 다음과 같이 설정해야합니다.
이MainView.MainContentFrame.Navigate(New Uri("/SecondView", UriKind.Relative))
이 아마 어떤 방법으로 MVVM 패턴을 위반하고 그것을 할 수있는 좋은 방법이되지 않을 수도 있습니다,하지만 그것을 작동 :
Public Shared MainContentFrame As Frame
Private Sub MainContentFrameXaml_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs)
MainContentFrame = TryCast(sender, Frame)
End Sub
그런 다음 뷰 모델에 그냥 호출 할 수 있습니다. 지금까지 PRISM을 사용했던 방식입니다.
도움 주셔서 감사합니다 !! 그것은 일했습니다 .. – Prathibha
@ user672094 도움이된다면 대답으로 답을 표시하십시오 ... 나는 대표를 사랑합니다! –
- 1. UIPageControl을 사용하여 한보기에서 다른보기로 이동하는 방법은 무엇입니까?
- 2. xcode의 한보기에서 다른보기로 날짜를 보내는 방법은 무엇입니까?
- 3. codeigniter의 웹 사이트 메뉴 모음에서 한보기에서 다른보기로 이동하는 방법
- 4. 한보기에서 다른보기로 작업을 수행하는 방법
- 5. 버튼 클릭시 한보기에서 다른보기로 이동 ----?
- 6. textview를 클릭하면 다른보기로 이동하는 방법은 무엇입니까?
- 7. 보기를 컨테이너보기에서 다른보기로 이동하는 방법은 무엇입니까?
- 8. 하나의보기에서 다른보기로 전환하는 방법은 무엇입니까?
- 9. 모노 터치로 한보기에서 다른보기로 데이터 전달
- 10. 한보기에서 다른보기로 시간 간격을 설정하는 방법
- 11. iphone에서 한보기에서 다른보기로 데이터를 전달할 수 없습니다.
- 12. 한보기에서 다른보기로 NSString을 전달할 수 없습니다.
- 13. 하나의보기를 다른보기로 이동하는 방법?
- 14. 다른보기로 이동하는 Ipad SplitViewController
- 15. 하위보기에서 다른보기로 이동하는 방법
- 16. ViewModel의 다른 페이지로 이동하는 것이 옳은가요?
- 17. 마우스 클릭시 다른보기로 이동하는 방법
- 18. 지도 주석보기 단추를 데이터베이스와 연결하여 다른보기로 이동하는 방법은 무엇입니까?
- 19. 모달보기에서보기로 이동하는 방법은 무엇입니까?
- 20. Silverlight에서 ChildWindow를 이동하는 방법
- 21. 하위보기를 한보기에서 다른보기로 이동할 때 하위보기 프레임에 어떤 일이 발생합니까?
- 22. 하나의보기에서 다른보기로 이동하는 터치 상호 작용 감지
- 23. iPhone : NSUserDefault를 사용하여 사진 라이브러리에서 가져온 한보기에서 다른보기로 이미지를 보내는 방법은 무엇입니까?
- 24. 다른보기로 데이터/이미지 열기
- 25. TabBar 응용 프로그램에서 한보기에서 다른보기로 변경할 때 경고를 표시 할 수 없습니까?
- 26. ViewModel의 유효성을 검사하고 매핑하는 방법은 무엇입니까?
- 27. 배열을 이동하는 방법은 무엇입니까?
- 28. 텍스트보기를 이동하는 방법은 무엇입니까?
- 29. Silverlight에서 물리 효과를 적용하는 최선의 방법은 무엇입니까?
- 30. 맞춤 이벤트가있는보기에서 다른보기로 데이터를 전달하는 방법은 무엇입니까?
'보기 열기'는 무엇을 의미합니까? 그곳으로 가거나 무엇을 탐색하고 싶습니까? –
예! 한보기에서 다른보기로 이동하십시오. – Prathibha