1

我正在使用 UWP 应用程序教程中navigation view的使用 NavigationView 编写应用程序。我希望有人可以帮助澄清两件事

  1. 放置我的一般例程的最佳做法是什么?在各自的观点中MainPage.xaml.cs还是xaml在各自的观点中?

  2. 如何更新我的xaml元素,例如textblock在不同的视图中?例如。我readHardwareID在启动时运行了一个例程来读取硬件 IDMainPage.xaml.cs如何在InfoPage.xaml.

我的用户界面 主要的 在此处输入图像描述

请指教,谢谢。

更新时间:2020 年 6 月 8 日

我正在尝试将一个简单的 AppVerisontext从 MainPage 传递到 InfoPage 以进行测试OnNavigateTo。但是,当我运行代码并单击info选项卡时,我遇到了这个错误。 在此处输入图像描述

主页代码

public String AppVersionName = "Test version 1.0";

private void nvTopLevelNav_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
    {
        if (args.IsSettingsInvoked)
        { 
            contentFrame.Navigate(typeof(SettingsPage));    
        } else    
        {
            TextBlock ItemContent = args.InvokedItem as TextBlock;
            if (ItemContent != null)
            {
                switch (ItemContent.Tag)
                {
                    case "Nav_Home":
                        contentFrame.Navigate(typeof(HomePage));
                        break;

                    case "Nav_Devices":
                        contentFrame.Navigate(typeof(DevicesPage));
                        break;

                    case "Nav_Log":
                        contentFrame.Navigate(typeof(LogPage));
                        break;

                    case "Nav_Info":
                        contentFrame.Navigate(typeof(InfoPage));
                        break;
                }
            }
        }

信息页代码

public sealed partial class InfoPage : Page
{
    private MainPage mainPage;

    string appVersion; 

    public InfoPage(MainPage page)
    {
        this.InitializeComponent();
        mainPage = page;
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);

        var data = e.Parameter;
        appVersion = mainPage.AppVersionName; 

        readHardwareID();
    }

    public void readHardwareID()
    {
        var deviceIdtoken = HardwareIdentification.GetPackageSpecificToken(null);
        var deviceId = deviceIdtoken.Id;
        var deviceIdReader = DataReader.FromBuffer(deviceId);

        byte[] deviceIdbytes = new byte[deviceId.Length];
        deviceIdReader.ReadBytes(deviceIdbytes);

        DeviceID.Text = BitConverter.ToString(deviceIdbytes);

        var sysIdToken = SystemIdentification.GetSystemIdForPublisher();
        var sysId = sysIdToken.Id;
        var sysIdReader = DataReader.FromBuffer(sysId);

        byte[] sysIdbytes = new byte[sysId.Length];
        sysIdReader.ReadBytes(sysIdbytes);

        SystemID.Text = BitConverter.ToString(sysIdbytes);

        // get the system family information
        string deviceFamily = AnalyticsInfo.VersionInfo.DeviceFamily;
        Device.Text = deviceFamily;

        // get the system version number
        var deviceFamilyVersion = AnalyticsInfo.VersionInfo.DeviceFamilyVersion.ToString();
        var version = ulong.Parse(deviceFamilyVersion);
        var majorVersion = (version & 0xFFFF000000000000L) >> 48;
        var minorVersion = (version & 0x0000FFFF00000000L) >> 32;
        var buildVersion = (version & 0x00000000FFFF0000L) >> 16;
        var revisionVersion = (version & 0x000000000000FFFFL);
        var systemVersion = $"{majorVersion}.{minorVersion}.{buildVersion}.{revisionVersion}";
        OSVersion.Text = systemVersion.ToString();
        AppVersion.Text = appVersion;

    }
}
4

2 回答 2

1

放置我的一般例程的最佳做法是什么?在 MainPage.xaml.cs 或各自视图中的 xaml 中?

如果您想NavigationView用作应用程序的基础架构,我们建议您使用Windows Template Studio制作NavigationViewUWP 模板应用程序。您可以使用添加特定页面Windows Template Studio。有关更多信息,请参阅此处的链接。

如何在不同的视图中更新我的 xaml 元素,例如 textblock?例如。我在启动时运行了一个 readHardwareID 例程来读取 MainPage.xaml.cs 中的硬件 ID 如何在 InfoPage.xaml 中显示信息

如果您已在 中加载数据,则可以在导航到并从 OnNavigatedTo 覆盖方法获取数据时MainPage使用方法对参数进行分页。Frame.NavigateInfoPage

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    var data = e.Parameter;
}
于 2020-08-04T07:25:43.677 回答
0

navigation我从下面的链接中找到了一个简单的解释。

由于我是一个没有太多软件开发背景的硬件人员,因此带有有限示例和参考的官方文档使我感到困惑。

我建议这个简单的例子将能够帮助很多初学者,因为它非常简单、直接和清晰。

在 UWP 页面之间传递参数(常见类型 string、int 和自定义类型)

于 2020-08-19T05:44:37.623 回答