1

UWP アプリケーションで NavigationView を使用するチュートリアルにnavigation view基づいてアプリを作成しています。誰かが2つのことを明確にするのを手伝ってくれることを願っています

  1. 一般的なルーチンを配置するベスト プラクティスは何ですか? MainPage.xaml.csまたはそれぞれのビューxamlで?

  2. 別のビューxamlなどで要素を更新するにはどうすればよいですか? textblock例えば。readHardwareID起動時にルーチンを実行してハードウェア ID を読み取りMainPage.xaml.csますInfoPage.xaml

私のUI 主要 ここに画像の説明を入力

アドバイスしてください、ありがとう。

更新日: 2020 年 6 月 8 日

textMainPageから InfoPage に単純な AppVerison を渡してテストしようとしていOnNavigateToます。ただし、コードを実行してinfoタブをクリックすると、このエラーが発生しました。 ここに画像の説明を入力

MainPage コード

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;
                }
            }
        }

InfoPage コード

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