0

老实说,我在某种程度上很难使用 MVVM。更准确地说,我很难在 MVVM 中创建/更改页面。

这是我的 MainPage 包含我的 SplitView:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <!--#region Splitview-->
    <Grid.RowDefinitions >
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <RelativePanel >
        <Button 
                FontFamily="Segoe MDL2 Assets" 
                Content="&#xE700;" 
                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="&#xE72D;"
                                       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="&#xE72D;"
                                       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 中使用视图)。

4

2 回答 2

1

是的,您的第一个假设是正确的。您需要将 SplitView.Content 部分中的 GridView 替换为 Frame。然后,当您想要导航到特定视图时,调用 Frame.Navigate。

为了让 MVVM 让您的主页 ViewModel 不了解您的视图,您可以定义一个 NavigationService 来封装页面和视图结构以及视图类型。

这是一篇关于 MVVM 基础知识和构建 NavigationService 的好文章:https ://msdn.microsoft.com/en-us/magazine/jj651572.aspx (转到“设置导航”部分)。

StackOverflow 的另一个很好的描述:Navigating to a new page from the View Model in Windows Phone 8.1 universal app

于 2017-03-31T16:07:57.473 回答
0

由于“没有完全正确地理解一切”,我最终得到了一个“糟糕”的解决方案 - 工作正常,但代码/工作应该少得多。

帮助我非常了解视图之间的切换!我最终使用了它。

遗憾的是,我找不到一个好的教程来更改它,<SplitView.Content>所以我在每个视图上“复制并粘贴”它。

于 2017-04-25T14:02:16.553 回答