我正在为Microsoft的Surface表编写一个应用程序。我需要在屏幕(Windows或Pages)之间导航。 SurfaceSDK是否提供类似于NavigationWindow的东西?如果没有,我如何在屏幕之间导航?
答案 0 :(得分:3)
答案 1 :(得分:0)
答案 2 :(得分:0)
这应该很容易建立自己。在最简单的情况下,您可以让主窗口在托管“屏幕”的地方有一个内容控件。当您需要更改屏幕时,只需将contentcontrol的Content
属性更改为新屏幕的内容(可能是用户控件)。如果你还想要动画(比如屏幕之间的幻灯片切换)你还需要做更多的工作,我建议你创建一个单独的(用户)控件来处理屏幕变化。
<s:SurfaceWindow .... />
<Grid x:Name="LayoutRoot">
<ContentControl x:Name="screenHolder" />
<s:SurfaceButton Click="changeScreenButton_Click" Content="Change to next screen" />
</Grid>
</s:SurfaceWindow>
然后要更改屏幕,您可以在点击处理程序中执行以下操作:
screenHolder.Content = new MyNewScreenControl();
在MVVM架构中,您通常会将所述内容绑定到viewmodel上的属性,并让viewmodel负责选择要显示的“屏幕”(例如,将其屏幕属性设置为另一个视图模型)。来自UI的命令绑定可以触发屏幕更改,例如:
public ScreenViewModelBase CurrentScreen
{
get { return _currentScreen; }
set
{
if (_currentScreen != value)
{
_currentScreen = value;
RaisePropertyChanged("CurrentScreen");
}
}
}
public ICommand ChangeToNextScreenCommand
{
get { return new RelayCommand(() => CurrentScreen = GetNextScreenFromList()); }
}
以上用户界面将更改为:
<s:SurfaceWindow .... />
<!-- Assuming we have a data context setup which is our viewmodel above -->
<Grid x:Name="LayoutRoot">
<ContentControl Content="{Binding CurrentScreen}"/>
<s:SurfaceButton Command="{Binding ChangeToNextScreen}" Content="Change to next screen" />
</Grid>
</s:SurfaceWindow>