问题标签 [avaloniaui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1034 浏览

c# - Avalonia UI 缩放问题

我正在使用 Avalonia 开发一个跨平台桌面 MVVM 应用程序,我的问题非常简单:

我想使整个窗口适应目标设备的显示分辨率。例如,UI 应始终缩放以覆盖 25% 到 50% 的显示,但不应更大。缩放应该包括所有字体大小、宽度和高度属性等。在这里可视化它是它在我的 4K 桌面上的外观,它应该是这样的:

桌面

在我的分辨率较低的 linux 笔记本电脑上,它看起来像这样:

在此处输入图像描述

我想做的是根据显示分辨率放大或缩小所有内容,使其看起来不像垃圾,并且字体始终清晰可读(因此字体也需要缩放)。 (可能还有一个用于 UI 缩放的 WinAPI 调用,但该解决方案也应该适用于 linux 和 OSX)

如何使用 Avalonia 实现这一点?或者有没有实现这一目标的首选方法?

请注意,应用程序的宽高比应保持不变,并且应用程序不应覆盖整个屏幕。

到目前为止我的想法:

  • 我可能会为每个大小参数创建绑定,并使用某种缩放因子在应用程序启动时重新计算最佳大小,但这需要一堆新代码,并且使用字体大小来实现会很痛苦。

  • 也许创建绑定和一堆样式预设,比如 CSS 媒体查询?不过,那也将是一堆工作。

有没有更好的方法来达到预期的效果?

0 投票
1 回答
183 浏览

avaloniaui - 类似于 Avalonia UI 中的抽象 Adorner (wpf) 类?

如果在 WPF 中使用抽象类Adorner实现了一个装饰元素,那么如何在Avalonia UI中实现该对象的实现?

0 投票
2 回答
594 浏览

reactiveui - 从 IActivatableViewModel 中的 WhenActivated 调用异步方法

我正在使用 AvaloniaUI 框架来构建应用程序。
我有一个实现的视图模型,IActivatableViewModel我正在调用WhenActivated视图模型构造函数。我定义HandleActivation了一个方法,当视图模型被激活时调用,HandleDeactivation当视图模型被停用时。一切都被正确调用,那里没有问题。

它看起来像这样:

我还有一个数据服务,可以从数据库中检索一些数据。我要调用的方法返回一个Task<T>. 它看起来像这样:

我想做的是GetActiveUsers 从 HandleActivation 方法调用。我需要获取用户列表,然后在检索它们后对它们进行一些后期处理。
如果我在异步方法中这样做,我会做这样的事情

由于HandleActivation不是异步方法,我对如何去做这件事有点困惑。
有没有一种方法可以使我HandleActivation异步,是否有一种我缺少的“反应性”方法。我对 AvaloniaUI 和 ReactiveUI 以及响应式编程本身非常陌生,所以我确信有一种“正确”的方法可以做到这一点,但我很难弄清楚。

0 投票
1 回答
471 浏览

user-interface - 如何根据文本框值在 AvaloniaUI 中启用按钮

我是 Avalonia 的新手,所以我的代码应该很基本。我有 1 个窗口,其中有 1 个面板,即:

该面板具有 TextBlock、TextBox 和按钮。默认情况下不启用该按钮。我的问题是,当 textBox 的值发生变化时,如何启用它。这是我的 Model 类,其中已经包含一些基本逻辑:

0 投票
1 回答
305 浏览

c# - 处理 avalonia 位图的正确方法是什么?

我正在使用Avalonia UI 框架来构建一个 dotnet 核心 MVVM 应用程序。
我想显示来自 WebCam 的帧并创建了一个简单的 WebCamViewModel:

我尝试了 naiv 方法并像这样处理旧位图:

我得到 System.NullReferenceException:“对象引用未设置为对象的实例。” 在调整应用程序大小时。堆栈跟踪

  1. 如何正确处理旧的位图实例,以便 GC 没有太多工作要做?

  2. 是否有更好的方法来显示动态变化的图像内容?

0 投票
0 回答
82 浏览

.net-core - Windows 10 打印到 PDF 窗口未显示。Avlonia 窗口变得无响应

我正在从我的 avalonia 应用程序中打印一份基本测试文档。问题是当我从 Windows 10 中选择“Microsoft Print to PDF”作为我的目标打印机时,应用程序挂起并且没有任何反应。

我认为问题在于,Avalonia 窗口以某种方式阻止了与打印到 pdf 服务相关的保存文件对话框的显示。

因此,一个(几乎)解决方法是隐藏窗口,然后再次显示它,如下所示:

但是,当用户选择任何其他打印机时,该窗口将被隐藏并无缘无故地显示。除此之外,我希望保存对话框出现在我的应用程序主窗口顶部,就像在我测试“Microsoft Print to PDF”打印机的任何其他应用程序中一样。

我在Github上创建了一个最小的复制示例。

0 投票
2 回答
327 浏览

avaloniaui - 是否可以在 Avalonia 中注册服务?

Avalonia UI 是否能够在 Program 类中注册其服务,还是我必须连接第三方 MVVM 支持库?

0 投票
1 回答
415 浏览

c# - AvaloniaUI 如何从 TextBox 继承

因此,我正在尝试使用 Avalonia UI 框架创建一个TextBox支持SecureString(基本上我想覆盖)的自定义控件。OnTextInput()

对我来说显而易见的方法是直接继承自TextBox. 像这样

根据我对继承的理解,ProtectedTextBox现在应该完全像TextBox它派生的那样。

但是,当使用 my 时ProtectedTextBox,它似乎根本没有被渲染。我确定我只是在这里犯了一些愚蠢的错误,但是对于我的生活,我无法弄清楚为什么它不起作用。

预期行为:

这是我用于测试的 asaml 代码:

它产生了以下完美的输出:(我们有一个丑陋但正常工作TextBox预期的

实际行为:

ProtectedTextBox当我使用我的(直接派生自TextBox)时,我不会期望有任何差异

然而,它只是不可见的,不会被渲染。(Avalonia DevTools 似乎知道它存在,并且当在 LogicalTree 中选择它时,我ProtectedTextBox 应该得到的位置突出显示)。 实际的

于是出现了几个问题:

  1. 为什么我的子类的行为与其父类不同。当然它应该表现相同吗?
  2. 这只是一些特定于 Avalonia 的怪异(即,也许 Avalonia 的渲染使用反射并且 GetType()会为这些不同的类返回不同的东西)?
  3. 我将如何创建自定义控件TextBox?有可能吗(不用自己痛苦地重新创建它的所有功能)?
0 投票
2 回答
1829 浏览

c# - 如何在 AvaloniaUi 中创建类似 ListView 的表?

如何在 Avalonia ui 中创建类似于 ListView 的表?我只在计划中播种 ListView,但我确信有相同的变体如何做到这一点。

0 投票
2 回答
1038 浏览

avaloniaui - 如何在 DataGrid 中的 Avalonia Ui 中使用组合框制作列?

是否可以在 Avalonia Ui DataGrid 中实现一个带有组合框编辑单元格的列,也就是说,只需打开这个组合框就可以编辑一个单元格,并且用户可以简单地从提供的选项中进行选择?我试图实现这样的 DataGrid,但遇到了问题。我连接了 Nuget Avalonia.DataGrid 库,按照它所说的方式连接了 App.axaml 中的样式。结果,组合框出现在 DataGrid 中,但其中没有下拉菜单,尽管相同的组合框在 DataGrid 之外也能正常工作。这段代码有什么问题?