Я новичок в Xamarin.Forms. Я писал кроссплатформенное приложение для мобильных устройств и настольных компьютеров (UWP и WPF) с одним и тем же пользовательским интерфейсом, за исключением некоторых собственных элементов управления, которые отображаются только для настольного приложения. В частности, я хотел бы включить MenuBar (UWP) или Menu (WPF), чтобы настольное приложение напоминало более традиционное приложение.
Я пытался использовать собственное представление, как в https://docs.microsoft.com/es-es/xamarin/xamarin-forms/platform/native-views/xaml, но пока безуспешно.
Код моего файла XAML выглядит примерно так:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage
x:Class="SubclassedNativeControls.SubclassedNativeControlsPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:winControls="clr-namespace:Windows.UI.Xaml.Controls;assembly=Windows, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null, ContentType=WindowsRuntime;targetPlatform=Windows">
<ContentView x:Name="MenuContent">
<winControls:MenuBar>
<winControls:MenuBarItem Title="File">
<winControls:MenuFlyoutItem Text="New" />
<winControls:MenuFlyoutItem Text="Open" />
<winControls:MenuFlyoutItem Text="Edit" />
</winControls:MenuBarItem>
</winControls:MenuBar>
</ContentView>
</ContentPage>
Но тогда возникает исключение:
Невозможно установить содержимое winControls: MenuBarItem, поскольку у него нет ContentPropertyAttribute '
Я также попытался получить доступ к MenuBar с помощью кода, содержащего MenuBar, и заполнить его со стороны C #, но тогда в приложении UWP ничего не отображается:
#if WINDOWS_UWP
// MenuBarItem creation
MenuBarItem menuBarItem = new MenuBarItem{ Title = "File"};
menuBarItem.Items.Add(new MenuFlyoutItem(){ Text = "New"});
menuBarItem.Items.Add(new MenuFlyoutItem(){ Text = "Open"});
// Access to the menuBar
var menuContent = (Xamarin.Forms.Platform.UWP.NativeViewWrapper)MenuContent.Content;
var menubarControl = (Windows.UI.Xaml.Controls.MenuBar)menuContent.NativeElement;
menubarControl.Items.Add(menuBarItem);
#endif
Я знаю, что можно использовать menuBars, как в Xamarin.Forms: Platform-independent меню приложения, но поскольку мне тоже требуется приложение WPF (с использованием Xamarin.Forms.WPF), родное представление кажется наиболее интересным подходом.