问题标签 [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.
c# - 在 Avalonia ItemsControl 中根据 ViewModel 类型选择 DataTemplate
内部有带有 ItemsControl 的 UserControl,需要根据 Items 集合元素类型显示具有不同 DataTemplate 的项目。
遵循基于此答案创建的 TemplateSelector 和 XAML(Selecting a DataTemplate based on DataContext property in Avalonia)
在运行时出现异常:
Avalonia.Markup.Xaml.XamlLoadException: '没有为 Desktop.Views.Items.Item1View 找到预编译的 XAML,请确保指定 x:Class 并将您的 XAML 文件包含为 AvaloniaResource'
如果在 ItemsControl 而不是<itemsViews:Item1View/>
指定<TextBlock Text="{Binding Name}"/>
,那么一切正常。但我想将每个项目的标记拆分为具有单独 ViewModel 的单独 XAML 文件。项目可以完全不同。
是否有可能解决这个问题,以便 ItemsControl 将根据 ViewModel 类型选择 DataTemplate?
c# - 如何获得 Avalonia 窗口的尺寸?
我正在创建一个 C# .NET Core 5 应用程序,该应用程序旨在使用 Avalonia 作为 GUI 在 Windows 10 和 Linux 上运行。我不想使用反应式 api。我不知道如何使用 avalonia 支持的通知系统,所以我决定创建一个单独的窗口,它在顶部停留 X 秒并显示标题和消息。如果用户单击它,窗口会在 X 秒后或更早消失。
这是代码的一部分:
窗口是这样调用的:
“this”指的是主窗口。
XScreenSize
并YScreenSize
获取屏幕的大小。我试图获取通知窗口的大小以计算其位置,但对我来说似乎是不可能的。
win.Height
返回 NaN (同样适用于win.Width
)
win.Bounds
也无济于事。对于win.ClientSize
. 我已经尝试了所有与我相关的属性,但我无法获得新窗口的大小。有什么方法可以在这两个操作系统中工作吗?
我想这应该很明显,但我也在为通知窗口添加 xaml 文件:
reactiveui - Avalonia + ReactiveUI - Events() 生成的药剂师
我正在尝试总体上了解 Avalonia,尤其是 Reactive UI 集成。通过谷歌搜索,我了解到 Avalonia 取消了对 ReactiveUI 中的 Avalonia 支持,并尝试将 ReactiveUI 集成到 Avalonia 本身,以支持有时不稳定的 Avalonia API。
我正在实现一个流程,双击 DataGrid 行应该打开一个详细信息窗口,我可以通过在后面的代码中为 DoubleTapped 事件添加一个处理程序来做到这一点。但是,我想知道是否可以通过观察 DoubleTapped 事件以反应式 UI 方式在 WhenActivated() 实现中执行此操作。
在 ReactiveUI 文档中,我看到有一个 Pharmacist 集成,它为这些事件生成 observables。但是,当我在后面的代码中获取对 DataGrid 的引用并尝试通过 DoubleTapped 挂钩时
myDataGrid.Events(). ...
,我看不到任何事件。这是否意味着目前 Avalonia 没有这种支持?
最后,当我在处理它时,如果我忘记了响应式 UI 支持,并使用了直接的事件处理程序,我需要做一些事情来检测它是被双击的行,还是其他的东西(比如作为标题)。我必须这样做,因为据我了解,Avalonia 中没有 EventSetter 实现。
谁知道 Avalonia 将来是否会支持这个?
编辑:最后我使用的 ReactiveUI 有点类似于
xaml - 在 Avalonia 中设置窗口图标
我正在为一个学校项目编写一个小应用程序,但我不知道如何更改窗口图标。我找到了 Window 的“图标”属性,但我不知道它是如何工作的,因为我几乎没有找到关于它的文档。当我尝试在该字段中输入内容时,它抛出了一个错误,即找不到资源。我也阅读了有关导入资源的内容,但这是我的第一个此类应用程序,所以我完全迷路了。非常感谢任何帮助,谢谢
datagrid - Avalonia DataGrid 输入处理
我正在使用Avalonia.Controls.DataGrid
. 默认情况下,当网格获得焦点并按下 Enter 时,它会自动处理事件并将选择移动到下一个项目。如何防止这种默认行为?我想要一个自定义的 Enter KeyDown 处理程序。
titlebar - Avalonia:在 Linux 上隐藏标题栏窗口不起作用
我正在使用 avalonia(版本 0.10.3 - 但同样发生在 0.10.0 - 在 Net5.0 项目上)作为项目的 UI,当我创建例如启动画面或关于屏幕时,标题栏必须是无形的。
在 Windows 上,使用窗口部分中的这些参数可以正常工作:
不幸的是,在 Linux 上(mint - 带有最新更新的最新版本),标题栏仍然可见(如果我设置 ExtendClientAreaTitleBarHeightHint="-1")。
这是一个已知问题还是我做错了什么?
我没有mac,但是mac也是这样吗?
c# - TaskCompletionSource 而不是线程安全库
我有 C# avalonia应用程序通过开发人员提供的 SDK 使用了一些非线程安全的库。更具体地说是Windows Zoom SDK。一些 SDK 功能是基于事件驱动模式构建的。调用 SDK 方法后,应用程序必须等待执行结果回调到达。因此,使用 TaskCompletionSource 在应用程序中应用了基于任务的异步模式(请参见下面的代码)。
在应用程序中应用 async/await 模式后,SDK 无法正常工作(详情)。但是,这个问题没有讨论使用 Zoom SDK。问题是关于 async/await 模式的使用如何可能导致某些非线程安全库(或 SDK)的错误行为?
SDK包装方法:
SDK 回调处理程序:
高级代码:
avalonia - In WPF, when visibility is set to Collapsed, the control will not occupy the original location. How can this be archieve in Avalonia
I want to hide a control in Avalonia, and then the space occupied by this control will be occupied by adjacent controls, just like the visibility.Collapsed in WPF.
wpf - 如何跟踪 ItemsControl 的哪个元素导致 ContexMenu 打开?
在我的图书编辑器应用程序中,我需要按层次顺序显示主题和子主题,所以我做了这样一个标记:
也许标记不是很清楚,但关键是我有外部 ItemsControl 和内部的。外部项目具有结构:按钮(主题名称)+ 内部 ItemsControl,它也将子主题的名称显示为按钮。这是屏幕截图:
每个 ItemsControl 都有自己的 ContextMenu,但我无法正确绑定它们。我希望“重命名”MenuItems 绑定到 Button.Content 的 Button 右键单击导致菜单打开。我应该怎么做?
我正在使用 MVVM Avalonia,但我希望在 WPF 中它的工作方式相同,以便我可以将 WPF 主题标签添加到这个问题中。
c# - 绑定到 Avalonia 中的集合时如何进行折线更新
我正在尝试将 a 链接Polyline
到Avalonia MVVM 应用程序中的 a ObservableCollection
of Point
s,并且我能够让它很好地显示点的初始集合,但是当集合更新时,折线不会显示任何更改。
首先,我尝试使用ReactiveUI
的 RaisePropertyChanged 函数,当我有一个文本块或其他可以显示文本的控件时,它可以正常工作,但它实际上并没有更新折线。所以接下来我尝试了像这样实现 INotifyPropertyChanged 的 WPF 方法:
(从绑定到 ObservableList<Point> 的折线不刷新)
(Database.GetPoints()
返回一个IEnumerable<Point>
)
并通过调用 PCollection 实例的 NotifyPropertyChanged 函数来通知更改,但在页面最初加载后,这同样不会影响折线。
我发现的其他结果涉及从代码中访问和更新绑定本身,而这对于 MVVM 是不可能的。
我也遇到了这个与 Avalonia 非常相关的问题线程,但我不知道如何利用那里发布的“简单修复”,或者即使不编辑 Avalonia 自己的代码也可以。
相关代码片段:
我的部分视图包含折线和一个按钮,该按钮在画布中创建一个随机点CanvasView.axaml
视图模型的一部分CanvasViewModel.cs
(Database.GetPoints()
返回一个IEnumerable<Point>
)