0

アプリにスプリットビューを含めます。しかし、私の splitview のコンテンツを埋める方法がわかりません。そこにフレームをネストする必要があると読みました。したがって、Mainpage.xaml があり、ユーザーが 1 つのメニュー ボタンをクリックすると、分割ビューのコンテンツは、たとえば helpandabout.xaml になります。または、コンテンツ プロパティに何を入れ子にする必要がありますか? また、コンテンツを別のページに置き換えるにはどうすればよいですか。 私は現在、ユーザーが 1 つのボタンを押した場合にグリッドの可視性を変更しようとしましたが、それはこのコントロールの背後にある哲学ではありません。このような:

<Grid x:Name="Grid1" Visibility="Visible"> </Grid>
<Grid Visibility="Collapsed" x:Name="Grid2"> </Grid>

そして、ユーザーが分割ビュー ペインでボタンを押すと、コードは次のことを行います。

Grid1.Visibility = Visibility.Collapsed;
Grid2.Visibility = Visibility.Visible;

そして、私はそれがばかげたコードであることを知っています。

4

1 に答える 1

0

実際には、完全なアプリ標準を SplitView や Create Navigation などに置き換えることができます。

私がしたことは次のとおりです。

1- ここからナビゲーションの例を学びます: uwp ナビゲーションの例

2.- それがどのように機能するかを学んだ後、コマンドバーがアプリバーの外にあるなどのいくつかのトリックがあります。ライブラリ内のすべてのコードを抽出できます。

AppShell.xaml、NavMenuItem、NavMenuListView.cs、PageHeader.xaml

3.- 次の拡張機能を作成します。

public class NavigationExtensions
{

public static void Initialize<T>(List<NavMenuItem> list, NavigationFailedEventHandler OnNavigationFailed, LaunchActivatedEventArgs e)
    {
        AppShell shell = Window.Current.Content as AppShell;

        // Do not repeat app initialization when the Window already has content,
        // just ensure that the window is active
        if (shell == null)
        {
            // Create a AppShell to act as the navigation context and navigate to the first page
            shell = new AppShell();

            shell.NavigationList = list;

            try
            {
                shell.CurrentItem = list.First(i => i.DestPage == typeof(T));
            }
            catch
            {

            }

            // Set the default language
            shell.Language = Windows.Globalization.ApplicationLanguages.Languages[0];

            shell.AppFrame.NavigationFailed += OnNavigationFailed;

            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
            {
                //TODO: Load state from previously suspended application
            }
        }

        // Place our app shell in the current Window
        Window.Current.Content = shell;

        if (shell.AppFrame.Content == null)
        {
            // When the navigation stack isn't restored, navigate to the first page
            // suppressing the initial entrance animation.

            shell.AppFrame.Navigate(typeof(T), e.Arguments, new Windows.UI.Xaml.Media.Animation.SuppressNavigationTransitionInfo());
        }

        // Ensure the current window is active
        Window.Current.Activate();
    }

}

4.- プロジェクトと App.xaml.cs add でこれらすべてを参照します。

protected override void OnLaunched(LaunchActivatedEventArgs e)
    {
        NavigationExtensions.Initialize<PersonalView>(Navigation.GetNavigationMenuItems(),OnNavigationFailed,e);
    }

メソッドの例は次のとおりです。

public class Navigation
{
    public static List<NavMenuItem> GetNavigationMenuItems()
    {
        var list = new List<NavMenuItem>(
        new[]
        {
            new NavMenuItem()
            {
                Symbol = Symbol.Contact,
                Label = "Personal",
                DestPage = typeof(PersonalView)
            },
            new NavMenuItem()
            {
                Symbol = Symbol.World,
                Label = "Countries",
                DestPage = typeof(CountriesView)
            },
            new NavMenuItem()
            {
                Symbol = Symbol.Setting,
                Label = "Settings",
                DestPage = typeof(SettingsView)
            },
        });

        return list;
    }
}
于 2015-08-08T21:01:15.987 に答える