UWP C# WINUI NavigationView Как получить доступ к другим страницам / представлениям - PullRequest
0 голосов
/ 03 августа 2020

Я пишу приложение, используя navigation view на основе Использование NavigationView в ваших приложениях UWP учебник. Я надеюсь, что кто-то может помочь прояснить 2 вещи

  1. как лучше всего разместить мои общие процедуры? в MainPage.xaml.cs или xaml в соответствующих представлениях?

  2. Как мне обновить мой элемент xaml, например textblock, в другом представлении? например. У меня есть процедура readHardwareID, запускаемая при запуске, чтобы прочитать идентификатор оборудования в MainPage.xaml.cs Как мне отобразить информацию в InfoPage.xaml.

мой пользовательский интерфейс Main enter image description here

Please advise, Thanks.

Updated: 06-08-2020

I am trying to pass a simple AppVerison text from MainPage to InfoPage to test out OnNavigateTo. However when I run the code and clicked on the info tab, I ran into this error. введите описание изображения здесь

Код главной страницы

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;

    }
}

Ответы [ 2 ]

0 голосов
/ 19 августа 2020
• 1000 1005 * Я предполагаю, что этот простой пример сможет помочь многим новичкам, поскольку он сделал его очень простым, понятным и понятным.

Передача параметров между страницами UWP (общие типы string, int и нестандартные типы)

0 голосов
/ 04 августа 2020

как лучше всего разместить мои общие распорядки? в MainPage.xaml.cs или xaml в соответствующих представлениях?

Если вы хотите использовать NavigationView в качестве базовой архитектуры приложения, мы предлагаем вам использовать Windows Template Studio для создания NavigationView приложения-шаблона UWP. Вы можете добавить c страницу с Windows Template Studio. Для получения дополнительной информации перейдите по ссылке здесь .

Как мне обновить элемент xaml, например текстовый блок, в другом представлении? например. У меня есть процедура readHardwareID, запускаемая при запуске для чтения идентификатора оборудования в MainPage.xaml.cs Как мне отобразить информацию в InfoPage.xaml

Если вы загрузили данные в MainPage, вы можете использовать метод Frame.Navigate для страницы параметра при переходе к InfoPage и получении данных из метода переопределения OnNavigatedTo.

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

    var data = e.Parameter;
}
...