MVVM 中的 C# uwp 更改 "Splitview.Content"
C# uwp change "Splitview.Content" in MVVM
老实说,我在 MVVM 上遇到了一些困难。
更确切地说,我很难在 MVVM 中使用 creating/changing 个页面。
这是包含我的 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 时显示视图?
我知道我需要一个框架,并且视图必须在该框架内,但我需要这方面的帮助,因为我被困在这里。 (或一般在 MVVM 中的视图)。
是的,您的第一个假设是正确的。您需要将 SplitView.Content 部分中的 GridView 替换为框架。然后当你想导航到特定视图时,你调用 Frame.Navigate.
为了让 MVVM 不让您的主页 ViewModel 深入了解您的视图,您可以定义一个封装页面和视图结构以及视图类型的 NavigationService。
这是一篇关于 MVVM 基础知识和构建 NavigationService 的好文章:https://msdn.microsoft.com/en-us/magazine/jj651572.aspx(转到 'Setting up Navigation' 部分)。
Whosebug 的另一个精彩描述:Navigating to a new page from the View Model in Windows Phone 8.1 universal app。
由于 "not understanding everything quite right" 我最终得到了 "bad" 解决方案 - 工作正常,但应该少得多 code/work.
This 帮助我理解了视图之间的切换!我最终使用了它。
遗憾的是,我找不到一个很好的教程来更改 <SplitView.Content>
,所以我在每个视图上都 "Copy & Paste"。
老实说,我在 MVVM 上遇到了一些困难。 更确切地说,我很难在 MVVM 中使用 creating/changing 个页面。
这是包含我的 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 时显示视图? 我知道我需要一个框架,并且视图必须在该框架内,但我需要这方面的帮助,因为我被困在这里。 (或一般在 MVVM 中的视图)。
是的,您的第一个假设是正确的。您需要将 SplitView.Content 部分中的 GridView 替换为框架。然后当你想导航到特定视图时,你调用 Frame.Navigate.
为了让 MVVM 不让您的主页 ViewModel 深入了解您的视图,您可以定义一个封装页面和视图结构以及视图类型的 NavigationService。
这是一篇关于 MVVM 基础知识和构建 NavigationService 的好文章:https://msdn.microsoft.com/en-us/magazine/jj651572.aspx(转到 'Setting up Navigation' 部分)。
Whosebug 的另一个精彩描述:Navigating to a new page from the View Model in Windows Phone 8.1 universal app。
由于 "not understanding everything quite right" 我最终得到了 "bad" 解决方案 - 工作正常,但应该少得多 code/work.
This 帮助我理解了视图之间的切换!我最终使用了它。
遗憾的是,我找不到一个很好的教程来更改 <SplitView.Content>
,所以我在每个视图上都 "Copy & Paste"。