Я довольно новичок в 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
Я знаю, что возможно использовать строки меню, как в Xamarin.Forms: Меню приложений, не зависящее от платформы , но, поскольку мне тоже требуется приложение WPF (использующее Xamarin.Forms.WPF), родной вид выглядит наиболее интересным.