繁体   English   中英

C#uwp在MVVM中更改“ Splitview.Content”

[英]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="&#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时如何显示视图? 我知道我需要一个框架,并且在该框架内必须有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM