![](/img/trans.png)
[英]In UWP/XAML How do I make the SplitView.Content fill the remaining space in a window?
[英]C# uwp change “Splitview.Content” in MVVM
老实说,我在MVVM上遇到了困难。 更确切地说,我很难在MVVM中创建/更改页面。
这是我的主页,其中包含我的SplitView:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<!--#region Splitview-->
<Grid.RowDefinitions >
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<RelativePanel >
<Button
FontFamily="Segoe MDL2 Assets"
Content=""
FontSize="30"/>
</RelativePanel>
<SplitView Grid.Row="1"
x:Name="SplitView"
DisplayMode="CompactOverlay"
IsPaneOpen="False"
CompactPaneLength="49"
OpenPaneLength="160"
PaneBackground="DarkGray"
>
<SplitView.Pane>
<StackPanel>
<ListBox SelectionMode="Single"
x:Name="lbHamburgerMenue"
Background="Gray"
HorizontalAlignment="Left">
<ListBoxItem Margin="0,5,0,2.5"
Background="DarkGray">
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe MDL2 Assets"
Text=""
FontSize="30"
VerticalAlignment="Center"/>
<TextBlock Margin="15,0,0,0"
Text="Home"
FontSize="20"
VerticalAlignment="Center"/>
</StackPanel>
</ListBoxItem>
<ListBoxItem Margin="0,2.5,0,2.5"
Background="DarkGray">
<StackPanel Orientation="Horizontal">
<TextBlock FontFamily="Segoe MDL2 Assets"
Text=""
FontSize="30"
VerticalAlignment="Center"/>
<TextBlock Margin="15,0,0,0"
Text="New Movie"
FontSize="20"
VerticalAlignment="Center"/>
</StackPanel>
</ListBoxItem>
</ListBox>
</StackPanel>
</SplitView.Pane>
<SplitView.Content>
<!--#endregion-->
<!--#region content area-->
<Grid Grid.Row="1" Grid.Column="1" >
</Grid>
</SplitView.Content>
</SplitView>
</Grid>
对于内容,我有点迷茫。 当选择另一个ListBox.Item时如何显示视图? 我知道我需要一个框架,并且在该框架内必须有View,但是在这方面我需要一些帮助,因为我被困在这里。 (或通常在MVVM中使用视图)。
是的,您的第一个假设是正确的。 您需要用Frame替换SplitView.Content部分中的GridView。 然后,当您要导航到特定视图时,请调用Frame.Navigate。
为了使MVVM不让您的主页ViewModel对您的视图有深入的了解,您可以定义一个NavigationService来封装页面和视图结构以及视图类型。
这是一篇有关MVVM基础知识和构建NavigationService的好文章: https : //msdn.microsoft.com/zh-cn/magazine/jj651572.aspx (转到“设置导航”部分)。
StackOverflow的另一个出色描述: 从Windows Phone 8.1通用应用程序中的“视图模型”导航到新页面 。
由于“不完全了解所有内容”,我最终得到了一个“糟糕”的解决方案-可以正常工作,但应减少代码/工作量。
这帮助我非常了解视图之间的切换! 我最终使用了它。
遗憾的是,我找不到一个很好的教程来更改<SplitView.Content>
因此我将其“复制并粘贴”到每个视图上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.