Wpf Microsoft Surface中的导航

Wpf Microsoft Surface中的导航,wpf,pixelsense,Wpf,Pixelsense,我正在为微软的Surface表编写一个应用程序。我需要在屏幕(窗口或页面)之间导航。SurfaceSDK是否提供类似于导航窗口的功能?如果没有,我如何在屏幕之间导航?SDK不提供这些控件的任何特定于表面的版本,主要是因为这种导航通常不适用于表面应用程序。在潜入构建你的应用程序之前,你可以考虑在这个和那个方面的建议,这可能会激励你建立一个更具吸引力的多点触摸和多用户体验的应用程序。 SDK没有提供这些控件的表面特定版本,主要是因为这种导航通常不适合于地面应用。在潜入构建你的应用程序之前,你可以考

我正在为微软的Surface表编写一个应用程序。我需要在屏幕(窗口或页面)之间导航。SurfaceSDK是否提供类似于导航窗口的功能?如果没有,我如何在屏幕之间导航?

SDK不提供这些控件的任何特定于表面的版本,主要是因为这种导航通常不适用于表面应用程序。在潜入构建你的应用程序之前,你可以考虑在这个和那个方面的建议,这可能会激励你建立一个更具吸引力的多点触摸和多用户体验的应用程序。

SDK没有提供这些控件的表面特定版本,主要是因为这种导航通常不适合于地面应用。在潜入构建你的应用程序之前,你可以考虑在这个和那个方面的建议,这可能会激励你建立一个更具吸引力的多点触摸和多用户体验的应用程序。

< P>我完全同意Josh的观点,即<>强>应该真正的< /强>重新思考你如何构建你的应用程序的用户体验。
但您可以在当前窗口的顶部打开另一个窗口。虽然不同窗口之间的交互非常复杂,但这确实很难维护…

我完全同意Josh的观点,即您应该重新思考如何构建应用程序的用户体验


但您可以在当前窗口的顶部打开另一个窗口。虽然不同窗口之间的交互非常复杂,但很难维护…

这应该很容易自己构建。在最简单的情况下,您可以让主窗口的某个地方有一个contentcontrol来承载您的“屏幕”。当您需要更改屏幕时,只需将contentcontrol的
Content
属性更改为新屏幕的内容(可能是usercontrol)。如果您还需要动画(如屏幕之间的幻灯片转换),您必须做更多的工作,我建议创建一个单独的(用户)控件,只处理屏幕更改

<s:SurfaceWindow .... />
  <Grid x:Name="LayoutRoot">
    <ContentControl x:Name="screenHolder" />
    <s:SurfaceButton Click="changeScreenButton_Click" Content="Change to next screen" />
  </Grid>
</s:SurfaceWindow>
在MVVM体系结构中,您通常会将内容绑定到viewmodel上的属性,并让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()); } 
}
上述UI将更改为:

<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>

这应该很容易自己构建。在最简单的情况下,您可以让主窗口的某个地方有一个contentcontrol来承载您的“屏幕”。当您需要更改屏幕时,只需将contentcontrol的
Content
属性更改为新屏幕的内容(可能是usercontrol)。如果您还需要动画(如屏幕之间的幻灯片转换),您必须做更多的工作,我建议创建一个单独的(用户)控件,只处理屏幕更改

<s:SurfaceWindow .... />
  <Grid x:Name="LayoutRoot">
    <ContentControl x:Name="screenHolder" />
    <s:SurfaceButton Click="changeScreenButton_Click" Content="Change to next screen" />
  </Grid>
</s:SurfaceWindow>
在MVVM体系结构中,您通常会将内容绑定到viewmodel上的属性,并让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()); } 
}
上述UI将更改为:

<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>