问题标签 [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.
c# - Avalonia UI 缩放问题
我正在使用 Avalonia 开发一个跨平台桌面 MVVM 应用程序,我的问题非常简单:
我想使整个窗口适应目标设备的显示分辨率。例如,UI 应始终缩放以覆盖 25% 到 50% 的显示,但不应更大。缩放应该包括所有字体大小、宽度和高度属性等。在这里可视化它是它在我的 4K 桌面上的外观,它应该是这样的:
在我的分辨率较低的 linux 笔记本电脑上,它看起来像这样:
我想做的是根据显示分辨率放大或缩小所有内容,使其看起来不像垃圾,并且字体始终清晰可读(因此字体也需要缩放)。 (可能还有一个用于 UI 缩放的 WinAPI 调用,但该解决方案也应该适用于 linux 和 OSX)
如何使用 Avalonia 实现这一点?或者有没有实现这一目标的首选方法?
请注意,应用程序的宽高比应保持不变,并且应用程序不应覆盖整个屏幕。
到目前为止我的想法:
我可能会为每个大小参数创建绑定,并使用某种缩放因子在应用程序启动时重新计算最佳大小,但这需要一堆新代码,并且使用字体大小来实现会很痛苦。
也许创建绑定和一堆样式预设,比如 CSS 媒体查询?不过,那也将是一堆工作。
有没有更好的方法来达到预期的效果?
avaloniaui - 类似于 Avalonia UI 中的抽象 Adorner (wpf) 类?
如果在 WPF 中使用抽象类Adorner实现了一个装饰元素,那么如何在Avalonia UI中实现该对象的实现?
reactiveui - 从 IActivatableViewModel 中的 WhenActivated 调用异步方法
我正在使用 AvaloniaUI 框架来构建应用程序。
我有一个实现的视图模型,IActivatableViewModel
我正在调用WhenActivated
视图模型构造函数。我定义HandleActivation
了一个方法,当视图模型被激活时调用,HandleDeactivation
当视图模型被停用时。一切都被正确调用,那里没有问题。
它看起来像这样:
我还有一个数据服务,可以从数据库中检索一些数据。我要调用的方法返回一个Task<T>
. 它看起来像这样:
我想做的是GetActiveUsers
从 HandleActivation 方法调用。我需要获取用户列表,然后在检索它们后对它们进行一些后期处理。
如果我在异步方法中这样做,我会做这样的事情
由于HandleActivation
不是异步方法,我对如何去做这件事有点困惑。
有没有一种方法可以使我HandleActivation
异步,是否有一种我缺少的“反应性”方法。我对 AvaloniaUI 和 ReactiveUI 以及响应式编程本身非常陌生,所以我确信有一种“正确”的方法可以做到这一点,但我很难弄清楚。
user-interface - 如何根据文本框值在 AvaloniaUI 中启用按钮
我是 Avalonia 的新手,所以我的代码应该很基本。我有 1 个窗口,其中有 1 个面板,即:
该面板具有 TextBlock、TextBox 和按钮。默认情况下不启用该按钮。我的问题是,当 textBox 的值发生变化时,如何启用它。这是我的 Model 类,其中已经包含一些基本逻辑:
.net-core - Windows 10 打印到 PDF 窗口未显示。Avlonia 窗口变得无响应
我正在从我的 avalonia 应用程序中打印一份基本测试文档。问题是当我从 Windows 10 中选择“Microsoft Print to PDF”作为我的目标打印机时,应用程序挂起并且没有任何反应。
我认为问题在于,Avalonia 窗口以某种方式阻止了与打印到 pdf 服务相关的保存文件对话框的显示。
因此,一个(几乎)解决方法是隐藏窗口,然后再次显示它,如下所示:
但是,当用户选择任何其他打印机时,该窗口将被隐藏并无缘无故地显示。除此之外,我希望保存对话框出现在我的应用程序主窗口顶部,就像在我测试“Microsoft Print to PDF”打印机的任何其他应用程序中一样。
我在Github上创建了一个最小的复制示例。
avaloniaui - 是否可以在 Avalonia 中注册服务?
Avalonia UI 是否能够在 Program 类中注册其服务,还是我必须连接第三方 MVVM 支持库?
c# - AvaloniaUI 如何从 TextBox 继承
因此,我正在尝试使用 Avalonia UI 框架创建一个TextBox
支持SecureString
(基本上我想覆盖)的自定义控件。OnTextInput()
对我来说显而易见的方法是直接继承自TextBox
. 像这样
根据我对继承的理解,ProtectedTextBox
现在应该完全像TextBox
它派生的那样。
但是,当使用 my 时ProtectedTextBox
,它似乎根本没有被渲染。我确定我只是在这里犯了一些愚蠢的错误,但是对于我的生活,我无法弄清楚为什么它不起作用。
预期行为:
这是我用于测试的 asaml 代码:
它产生了以下完美的输出:(我们有一个丑陋但正常工作TextBox
)
实际行为:
ProtectedTextBox
当我使用我的(直接派生自TextBox
)时,我不会期望有任何差异
然而,它只是不可见的,不会被渲染。(Avalonia DevTools 似乎知道它存在,并且当在 LogicalTree 中选择它时,我ProtectedTextBox
应该得到的位置突出显示)。
于是出现了几个问题:
- 为什么我的子类的行为与其父类不同。当然它应该表现相同吗?
- 这只是一些特定于 Avalonia 的怪异(即,也许 Avalonia 的渲染使用反射并且
GetType()
会为这些不同的类返回不同的东西)? - 我将如何创建自定义控件
TextBox
?有可能吗(不用自己痛苦地重新创建它的所有功能)?
c# - 如何在 AvaloniaUi 中创建类似 ListView 的表?
如何在 Avalonia ui 中创建类似于 ListView 的表?我只在计划中播种 ListView,但我确信有相同的变体如何做到这一点。
avaloniaui - 如何在 DataGrid 中的 Avalonia Ui 中使用组合框制作列?
是否可以在 Avalonia Ui DataGrid 中实现一个带有组合框编辑单元格的列,也就是说,只需打开这个组合框就可以编辑一个单元格,并且用户可以简单地从提供的选项中进行选择?我试图实现这样的 DataGrid,但遇到了问题。我连接了 Nuget Avalonia.DataGrid 库,按照它所说的方式连接了 App.axaml 中的样式。结果,组合框出现在 DataGrid 中,但其中没有下拉菜单,尽管相同的组合框在 DataGrid 之外也能正常工作。这段代码有什么问题?