标签: winui

WINUI 3.0 - Reunion 0.5 窗口大小///

我刚刚开始学习WinUI 3.0 ,在 google 或像《学习 WinUI 3.0如何设置应用程序的默认窗口大小》这样的书籍中找不到任何信息。我知道在 UWP 中它可能是这样的

ApplicationView.PreferredLaunchViewSize = new Size(480, 800);
ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize;
Run Code Online (Sandbox Code Playgroud)

但实际上它在WinUI中不起作用

c# winui winui-3

12
推荐指数
2
解决办法
8965
查看次数

将 WinUI 与 C++ 结合使用的指南

我将尝试尽可能简洁地总结我的问题:

  • 我有一个遗留的 C++ 项目,它使用 WinAPI 创建和管理 UI 元素。我想用一个支持 OOP 并具有某种视觉设计器的更现代的框架来替换它。我打算通过用新框架逐步替换旧的基于 WinAPI 的代码来实现这一点(例如,我可以引入一个使用新框架的新弹出窗口,而 UI 的其余部分仍将使用旧的窗口过程等)
  • 我最初的计划是使用 Qt,因为它允许我方便地将 UI 代码包装在对象中,这样我就可以轻松实例化和管理对象。它还有一个设计器,可以让我创建自定义 UI 元素(包括自动布局管理)、一个 Visual Studio 扩展,总的来说,过去的经验表明 Qt 非常适合我的目的。然而,这里的用户警告我,它与 WinAPI 配合得不好,我基本上必须从头开始重建应用程序。
  • 有人建议我改用 WinUI,即 XAML 与 C++/WinRT 相结合,因为它们应该提供与我上面描述的相同的灵活性。我成功地复制了“Win32 应用程序中的主机 UWP 控件”指南的结果,但除此之外似乎没有什么有用的材料。
  • 要获得明确的答案,浏览 Microsoft 文档相当困难。目前,上面的指南让我相信我仍然会坚持使用 WinAPI,因为似乎没有一种明显的方法将 UI 代码包装在对象中,最好是那些我可以从现有基础派生的对象类(例如某种基本的 Window 对象)

我有以下环境可以使用:

  • MSVC 支持的最新 C++ 功能级别
  • 视觉工作室 2019
  • Windows 10(即我不介意是否不再与 Windows 操作系统兼容)

我需要的:

  • 关于是否可以以与使用 C++ 在 Qt 中设计 UI 代码类似的方式使用 XAML 和 C++/WinRT 的明确答案。精确的奇偶校验是不必要的,我只是想消除使用 WinAPI 管理 UI 的麻烦,实际上我必须“手动”完成所有操作

  • 如果上述情况属实,那么我在哪里可以找到工作流程各个步骤的指南?如何制作“窗口对象”,如何设计具有布局管理的窗口,如何处理 UI 事件等?

  • 如果需要在我尝试升级的旧版 WinAPI 应用程序的上下文中完成上述操作,是否同样可行?

c++ user-interface winapi c++-winrt winui

6
推荐指数
0
解决办法
4245
查看次数

XML 命名空间“using:Microsoft.UI.Xaml.Controls”中不存在标记“XamlControlsResources”

我试图使用 WinUI,所以我从 Nuget 安装了插件 Microsoft.UI.Xaml (2.4.2),并按照说明将其添加<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls"/>到我的 App.Xaml

这是我的 App.Xaml 文件

<Application x:Class="WpfApp1.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApp1"
    StartupUri="MainWindow.xaml">
        <Application.Resources>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
        </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

但它说:

XML 命名空间“using:Microsoft.UI.Xaml.Controls”中不存在标记“XamlControlsResources”

我尝试了 WinUI 插件的旧版本,并尝试了 .Net Core 和 Framework,但仍然遇到这个问题

wpf xaml winui

6
推荐指数
1
解决办法
5098
查看次数

如何获取 WinUI 控件的父窗口?

我需要获得对父级的Microsoft.UI.Xaml.Window引用Control。Project Reunion 0.5 有办法做到这一点吗?Window.Current不适用于桌面应用程序。

c# windows winui winui-3

6
推荐指数
1
解决办法
1310
查看次数

System.ArgumentException:“值不在预期范围内。” 在内容对话框上

我正在尝试在我的 UWP (WinUI3) 应用程序中创建一个登录系统,当我尝试启动登录内容对话框时,它崩溃并抛出此错误:

System.ArgumentException:“值不在预期范围内。”

await messageDialog.ShowAsync();

app.xaml.cs 上的代码:

protected override async void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{

    m_window = new MainWindow();
    m_window.Activate();

    Login();

}

protected async void Login()
{
    var messageDialog = new ContentDialogs.LoginDialog();
    await messageDialog.ShowAsync();

    if (App.Aplicacao.Utilizador == null)
    {
        m_window.Close();
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

内容对话框 XAML:

<ContentDialog
    x:Class="xizSoft.ContentDialogs.LoginDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:xizSoft.ContentDialogs"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource SystemControlAcrylicWindowBrush}">

    <Grid>
    </Grid>
</ContentDialog>
Run Code Online (Sandbox Code Playgroud)

隐藏代码:

public LoginDialog()
{
    this.InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)

c# uwp winui winui-3

6
推荐指数
1
解决办法
6200
查看次数

WINUI3 内容对话框不显示

我试图在我的应用程序中显示一个弹出窗口来编辑品牌,但它没有显示。

我调用对话框的函数:

private async Task EditBrandAsync(Brand brand)
{
    var dialog = new ContentDialogs.EditBrandDialog(brand);
    await dialog.ShowAsync();
}
Run Code Online (Sandbox Code Playgroud)

内容对话框 XAML:

<ContentDialog
    x:Class="xizSoft.ContentDialogs.EditBrandDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:xizSoft.ContentDialogs"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <StackPanel>
        <TextBlock Text="Marca" Style="{StaticResource SubheaderTextBlockStyle}"/>

        <TextBox Header="Nome" Text="{Binding Name}"/>
        <TextBox Header="Logotipo" Text="{Binding LogoFileName}"/>

        <StackPanel>
            <Image Source="{Binding LogoFileName}"/>
        </StackPanel>
    </StackPanel>
</ContentDialog>
Run Code Online (Sandbox Code Playgroud)

隐藏代码:

namespace xizSoft.ContentDialogs
{
  public sealed partial class EditBrandDialog : ContentDialog
    {
        public Brand _brand {get; set;}

        public EditBrandDialog(Brand brand)
        { 
            this.InitializeComponent();
            this.DataContext = _brand = brand;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试进行调试并且正在调用内容对话框,所以我不知道为什么它没有显示。

c# xaml uwp winui winui-3

6
推荐指数
1
解决办法
3685
查看次数

Windows Sandbox 上的 MSIX 包?

我正在尝试弄清楚如何在 MSIX 中打包 WinUI 桌面应用程序。我们不想上传到 Windows 应用商店或其他任何东西,只是为了能够为人们提供一个安装程序(很像 .msi 文件),并让他们自己将其安装在台式电脑上。

我使用VS2022来打包最基本的WinUI应用程序,即框架为您创建的应用程序。我已成功为其创建了 .msix 文件。但当我将其复制到 Windows Sanbox 实例时,它似乎不知道如何处理 .msix 扩展名。Windows Sandbox 是版本 2004,根据此页面,它应该足够好。

但是,双击 .msix 文件不起作用:

在此输入图像描述

谁能建议这是为什么?

另外,这篇文章似乎表明,即使我可以打开 msix,它仍然需要最终用户手动安装依赖项!这肯定是不对的吧?没有最终用户愿意这样做,不是吗?这篇文章现在有点旧了(事情进展很快),所以有人可以告诉我这是否仍然是 msix 软件包安装程序的状态。有没有一种好的方法来打包应用程序以便安装简单?

installation sandbox msix winui

6
推荐指数
1
解决办法
1026
查看次数

UWP/WinUI 桌面应用程序访问 Azure Key Vault 机密

Microsoft 提供了多种方法来安全访问 Azure Key Vault 机密,特别是使用托管身份或服务主体作为身份提供者。但是,这些方法明确设计用于使用基于 Azure 的资源,例如 Web 应用程序和微服务。它们不适用于 UWP/WinUI 桌面应用程序。

到目前为止,我发现的允许 UWP/WinUI 桌面应用程序访问 Key Vault 的唯一方法是将应用程序的 Azure 注册信息(TenentId、ClientId 和 ClientSecret - 秘密,它们本身!)加载到由创建新的 SecretClient 对象 (Azure.Security.KeyVault.Secrets) 时的 DefaultAzureCredential() 方法。

但这意味着我需要将这些秘密存储在代码或配置文件中以便在运行时读取。绝对不是最佳实践!我肯定错过了什么。

2020 年,UWP/WinUI 桌面应用程序安全访问 Key Vault 机密(且在此过程中不会暴露其他机密)的最佳实践是什么?

desktop uwp azure-keyvault winui

5
推荐指数
1
解决办法
2454
查看次数

从 UWP 中的 IconElement 或 IconSourceElement 派生

我正在尝试创建与 MS SymbolIcon 相同的自定义符号图标控件,它将获取枚举符号值作为输入,并且将从字典<Symbol, string> 集合中检索等效路径数据值。但是从 IconElement 继承的符号图标类以及我的应用程序中面临的以下相同问题。

“IconElement 不采用带有 0 个参数的构造函数”

从 UWP 中的 IconElement 派生

但我已将我的构造函数标记为 extern 并用分号括起来以解决构造函数问题。

public class CustomSymbolIcon : IconElement
{ 
   public extern CustomSymbolIcon(); 
}
Run Code Online (Sandbox Code Playgroud)

But my question is, I can get input from the end user as Symbol Enum and retrieved equivalent path geometry based on input from the stored dictionary. But I couldn't bind the path geometry to the path element(Targeted Custom icon class)and I can't write the template style for this class. …

c# uwp uwp-xaml winui winui-3

5
推荐指数
1
解决办法
126
查看次数

如何使用 WinUI 3 添加桌面通知?

WinUI 3有添加桌面通知的功能吗?

请参阅参考资料(见下文)

桌面通知

.net c# xaml winui winui-3

4
推荐指数
1
解决办法
1941
查看次数