使用UWP编写特定于设备的XAML时,我们可以为每个设备系列创建不同的XAML视图。例如,Track.DeviceFamily-Xbox.xaml
。此页面使用与Track.xaml
相同的后端,但会在Xbox上使用该应用时加载。
我们还可以将URL传递给InitializeComponent()
方法以加载特定的xaml页面。
现在我想知道我是否可以将这些方法结合起来。在这个例子中,我想在全屏时加载Xbox UI。以下代码是理想的做法,但是......好吧我在这里,所以它不起作用:))
public Track()
{
// If the app is full screen, we can use the Xbox UI
if (App.IsFullScreen)
{
InitializeComponent(new Uri("ms-appx:///Views/Track.DeviceFamily-Xbox.xaml", UriKind.Absolute));
}
else
{
InitializeComponent();
}
// etc ...
}
有没有人对我能做什么有任何想法?有没有办法加载Xbox特定的视图,或者我应该只创建XAML视图,调用它TrackXbox.xaml
,然后在用户全屏或在Xbox上运行时处理加载该视图?
答案 0 :(得分:1)
好的,那么你想要做的可能是不可能的,但是实现这种功能的方法是:
但您想要的是在应用调整大小的多个视图之间切换,这样您可以使用VisualStates
之类的内容:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="Normal">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="900"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<--For larger screensizes-->
<Setter Value="3" Target="MyDummyButton.(Grid.RowSpan)"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Mobile">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0"/>
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Value="1" Target="MyDummyButton.(Grid.RowSpan)"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
现在当你想在同一设备系列中的多个视图之间切换时,你可以做的是来自codeBehind中的c#
VisualStateManager.GoToState(this, "Normal", useTransitions);
有关切换视觉状态的更多信息here。