是否可以在没有窗口或其他 UIElement 的情况下显示 WinUi3 MenuFlyout?

问题描述 投票:0回答:1

我对 WinUi3 比较陌生。我的目标是创建一个简单的bridge,以便在例如内部使用本机组件。 Java 项目,以便您可以在屏幕上的特定位置创建并显示

MenuFlyout

我厌倦了在

menuFlyout.ShowAt(null, new Point(0, 0));
上将 null 作为 UIElement 传递,但这会导致错误。

这是我尝试过的:

MenuFlyout menuFlyout = new();
MenuFlyoutItem menuItem = new(){ Text = "Test Exit" };
menuItem.Click += (sender, e) => { m_window.Close(); };
menuFlyout.Items.Add(menuItem);
menuFlyout.ShouldConstrainToRootBounds = false;
menuFlyout.ShowAt(null, new Point(0, 0));
c# .net winui-3
1个回答
0
投票

使用 WinUIEx NuGet 包可以轻松更改窗口的大小:

MainWindow.xaml

<ex:WindowEx
    xmlns:ex="using:WinUIEx"
    x:Class="WinUIApp3.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="using:WinUIApp3"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid
        x:Name="RootGrid"
        Loaded="Grid_Loaded" />

</ex:WindowEx>

MainWindow.xaml.cs

using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Windows.Foundation;
using WinUIEx;

namespace WinUIApp3;

public sealed partial class MainWindow : WindowEx
{
    public MainWindow()
    {
        InitializeComponent();

        IsTitleBarVisible = false;
        MinWidth = 0;
        MinHeight = 0;
        Width = 0;
        Height = 0;
    }

    private void Grid_Loaded(object sender, RoutedEventArgs e)
    {
        MenuFlyout menuFlyout = new();
        MenuFlyoutItem menuItem = new() { Text = "Test Exit" };
        menuItem.Click += (sender, e) => { this.Close(); };
        menuFlyout.Items.Add(menuItem);
        menuFlyout.ShouldConstrainToRootBounds = false;
        menuFlyout.ShowAt(RootGrid, new Point(0, 0));
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.