问题标签 [avalonia]

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 回答
809 浏览

c# - WPF - 通过单击适当的按钮将主题从暗变为亮 - Avalonia

我想为用户提供一个选项,通过单击按钮将主题从暗变为亮。

如何从其他 ViewModel 访问 Application.Styles?

0 投票
4 回答
2892 浏览

c# - Avalonia 按钮单击事件不起作用

我有一个简单的 Avalonia 表格:

以及后面代码中的一个方法(我想以这种方式做事,直到我熟悉 Avalonia,然后也许我会尝试 MVVM):

但是我得到这些编译错误:

名称 btn 在当前上下文中不存在(在后面的代码中)

无法为参数 System.Private.CoreLib:System.String 的 Avalonia.Controls:Avalonia.Controls.Button 类型的属性 Click 找到合适的设置器或加法器,可用的设置器参数列表为:System.EventHandler`1[[Avalonia.Interactivity。 RoutedEventArgs,Avalonia.Interactivity,版本=0.9.0.0,文化=中性,PublicKeyToken=null]](在 XAML 中)

无法为参数 System.Runtime:System.String 类型的 Avalonia.Controls:Avalonia.Controls.Button 属性命令找到合适的设置器或加法器,可用的设置器参数列表为:Avalonia.UnsetValueType Avalonia.Data.IBinding System.Windows.Input .ICommand(也在 XAML 中)

在连接这个事件处理程序时我做错了什么?

0 投票
2 回答
169 浏览

c# - DataGridCheckBoxColumn 用法——抛出未处理的异常

当 DataGridCheckBoxColumn 在 DataGrid 中使用并绑定到支持模型中的布尔属性时,会发生这种情况。当单击该列并且选中/取消选中复选框时——它的行为符合预期——但是当我关闭主窗口时,抛出异常。当仅使用文本列并与之交互时,不会发生这种情况。如果我根本不与复选框列交互而只是关闭窗口,它也不会发生。只有在与复选框列交互后关闭窗口时才会发生这种情况。

开发环境:

操作系统:
1. Arch Linux、Gnome 3、Wayland。
2.Windows 10 专业版

开发:
dotnet core 3.1.103
IDE:VS Code

重现步骤:

使用 DataGrid 的一般过程在教程文章中提到: Avalonia DataGrid Getting Started

我对文章所做的唯一更改是将 DataGridCheckBoxColumn 添加到 DataGrid 并将布尔值 IsChecked 属性添加到教程中使用的“Person”模型类——然后将两者绑定在一起。

所以关键步骤是:

  1. $ dotnet new avalonia.mvvm
  2. 在 *csproj 文件中,将所有 Avalonia 的版本包括到 0.9.10,因为这就是我正在使用的 DataGrid 的版本。
  3. $ dotnet add package Avalonia.Controls.DataGrid
  4. 在 App.xaml 中,添加样式:
    <StyleInclude Source="avares://Avalonia.Controls.DataGrid/Themes/Default.xaml"/>
  5. 将以下属性添加到模型类“Person” --- 其余代码保持不变,并按照链接教程:
  1. 将 DataGridCheckBoxColumn 添加到 DataGrid 并将其绑定如下所示(其余列保持不变,按照链接教程):
  1. 然后,当我运行应用程序(从命令行或 vscode)时——GUI 会按预期显示——包含所有列和值——并且通常会显示额外的复选框列。__ 当我单击复选框列时——复选框确实按预期被选中和取消选中(尽管需要额外单击一次)。 但是当我通过单击右上角的“X”关闭窗口时——那是未处理的异常发生的时候——而不是在那之前。

完整的异常文本:

未处理的异常。System.InvalidOperationException:集合已修改;枚举操作可能无法执行。在 System.Collections.Generic.List`1.Enumerator.MoveNextRare() 在 Avalonia.Collections.AvaloniaList`1.Enumerator.MoveNext() 在 System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)+MoveNext() 在Avalonia.Visual.OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs e) 在 Avalonia.Input.InputElement.OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs e) 在 Avalonia.Controls.Control.OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs e) 在 Avalonia.Visual.OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs e) 在 Avalonia.Input.InputElement。 Avalonia.Controls.Control 的 OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs e)。

Person 类的代码:

MainWindowViewModel 的代码充当 MainWindow 背后的代码,并使用上面的 Person 类来托管 ObservableCollection 并将其公开为名为 People 的公共属性。DataGrid 绑定到这个作为 Person 类集合的 People 属性(谁的属性由不同的列表示,例如 DataGridTextColumn 和 DataGridCheckBoxColumn):

更新:我已经放弃寻找解决方案。这是我的工作:

而不是使用 DataGridCheckBoxColumn (它还有一个额外的烦恼,即仅在单击两次时才被检查——我正在使用 DataGridTemplateColumn。它解决了上述异常问题——以及我想要的单击一次检查的属性。

0 投票
1 回答
1032 浏览

xaml - Avalonia - 使用内置的 Avalonia.Data.Converters

我正在尝试使用BoolConverters.And转换器,但似乎找不到让它在 XAML 中工作的方法。

xmlns 声明:

资源:

绑定:(我希望我得到了正确的多值语法)

我在这里想念什么?

0 投票
1 回答
656 浏览

avaloniaui - Avalonia - 如何像 OneNote 桌面 UI 一样垂直放置 Tab 控件的选项卡

我是新来的阿瓦洛尼亚。在 WPF 中,您可以轻松地将选项卡控件的选项卡垂直放置,如下文所示 https://www.wpf-tutorial.com/tabcontrol/tab-positions/

我怎样才能在 Avalonia 中实现类似的目标?

0 投票
1 回答
1195 浏览

c# - Avalonia - 如何创建新窗口?

我正在尝试熟悉 Avalonia,并将我的一个项目移植到它上面。

我在创建新窗口时遇到问题 - 我使用Tutorial中的手册,并在我的解决方案资源管理器中仅获取 .xaml.cs 文件: 在此处输入图像描述

文件 AboutView.xaml 在项目文件夹中创建,包含

但未显示。AboutView.xaml.cs 包含以下代码,并显示错误:

在此处输入图像描述

我究竟做错了什么?

0 投票
0 回答
65 浏览

c# - 并发实例 - 数据/设计问题

我正在尝试设计一个应用程序(C#/Avalonia),它允许为来自多个来源的数据创建视图。总体思路是使用各种可视化组件链接源并呈现结果。

有多种数据来源:

  • 数据库 1
  • 数据库 2/3/4
  • 肥皂

数据库 1 将用于存储与应用程序本身相关的所有内容(用户、权限等)。

数据库 2-4+ 只是数据馈送。

SOAP - 这是我挣扎的地方,不太清楚如何处理。可能有 10-50 个应用程序的并发实例正在运行,并且每个实例都可以从 SOAP 请求相同的数据更新(供应商的限制将使其成为不可能)。

我当时的想法是采取以下方法:

  1. 从 SOAP 请求初始数据
  2. 使用时间戳缓存数据库 1 中的数据
  3. 定义请求之间的延迟
  4. 一旦用户从 SOAP 请求数据更新,检查我们是否应该根据时间戳和延迟值返回缓存数据或新数据。

这种方法会导致用户在请求新数据的过程中终止应用程序的问题。

  • 用户 1 请求新数据,标记数据库以确保不会处理未来的请求
  • 用户 2 请求新数据 - 此阶段没有任何反应,等待并再次查询
  • 用户 1 终止 - 没有任何用户的新数据

这种方法是完全错误的吗?尝试仅使用客户端来处理它会是自杀吗?

0 投票
1 回答
309 浏览

.net - .Net Core Avalonia 中如何支持汉字?

我编译的程序在朋友的电脑上不能正常显示汉字(在我的Win10和Deepin Linux上可以正常显示),是不是缺少什么字体?电脑需要安装哪些字体? 不能显示汉字

0 投票
1 回答
1037 浏览

.net - 如何在不安装的情况下在 Avalon 应用程序中包含外部字体

我尝试使用一种中文字体HGDH_CNKI.TTF。我把它放进去sbid/Assets/Fonts/(我的项目名称是sbid)。

然后我像这样尝试,我使用:

或者

它仍然不起作用。我还需要做什么其他步骤吗?

0 投票
2 回答
742 浏览

c# - 如何在 Avalonia MVVM 应用程序中使用 InputGesture 实现 MenuItem?

我需要一个带有 InputGesture 的菜单,如下图所示:https ://github.com/AvaloniaUI/Avalonia/pull/3602

从 Microsoft Visual Studio Community 2019 开始,使用新的 Avalonia MVVM 应用程序,我尝试在 Visual Studio 中设置 XAML 以实现此目的:

然后,此行会导致错误消息:

我在这里找到了一个工作示例: https ://github.com/AvaloniaUI/XamlControlsGallery

我会尝试根据该示例构建我的解决方案和项目以使其正常工作。但我更希望能够在使用 Visual Studio 从头开始​​构建的新 Avalonia MVVM 应用程序上实现它。非常感谢提示。