问题标签 [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 回答
263 浏览

c# - 使用 DataBinding 时如何自动滚动 AvaloniaUI ScrollViewer?

我在我的 AvaloniaUI 应用程序中有这个设置:

TextBlock 基本上显示日志消息,当我将新行附加到绑定到 text 属性的字符串时,我希望它自动滚动到底部。

ScrollViewer 有一个名为 的方法ScrollToEnd(),每当我更新文本时都需要调用它。所以我试图在我的代码中定义一个函数,如下所示:

然后我尝试从我的 ViewModel 调用该函数:

但不幸的是,这个ScrollToEnd()函数需要从 UI-Thread 调用,因为我得到一个异常:

System.InvalidOperationException:'从无效线程调用'

我的问题是,每当我通过 DataBinding 更新 TextBlocks Text 属性时,如何将 ScrollViewer 自动滚动到最后?

0 投票
0 回答
26 浏览

avaloniaui - 如何在背景中平铺图像?

我尝试这样做,但它不起作用:

感觉需要为 TileMode="Tile" 做一些其他事情才能使其工作。上面的标记只在边框的角落显示一个图像,就是这样。

0 投票
1 回答
199 浏览

c# - 是否可以在 Avalonia 的项目之外引用 XAML 文件?

所以我在我的 Avalonia 项目之外有一个 XAML 文件,称为Base.xaml存储一个Styles对象。我想在我的文件StyleInclude中引用它,而不将它添加到我的项目中,但是:MainWindow.xaml

  • 当我使用相对路径 ( <StyleInclude Source="..\Base.xaml" />) 时,它表示无法解析此 URI。
  • 当我使用绝对路径 ( <StyleInclude Source="C:\Base.xaml" />)时,当窗口中有控件时,StyleInclude对象返回null并抛出。NullReferenceException

我怎么解决这个问题?

0 投票
0 回答
55 浏览

c# - 如何以编程方式绑定 XAML 中的数据

我将 roslynpad 项目用于教育目的。它基于 avalon 码头库,它实现了对我来说是新的 MVVM 模式。有可以停靠的编辑器窗口。我想添加也可以停靠的新窗口,但它应该是我的自定义窗口。我看到停靠管理器绑定到 OpenDocumentViewModel 对象的集合。OpenDocumentViewModel 表示所理解的视图模型。比有一个描述窗口布局的 DocumentView 类。现在主窗口 xaml 文件中有一行:

该行负责连接视图模型和文档视图,换句话说,对于该 DocumentView 设计应该附加到 OpenDocumentViewModel 集合中的窗口。

我想用我自己的设计插入我的窗口。所以对于特定的窗口我想写

但我不知道该怎么做,或者这是不可能的?

0 投票
1 回答
48 浏览

avaloniaui - Avalonia Ui 中的 DependencyPropertyDescriptor (wpf) 的模拟?

如何在 Avalonia 中实现相同的行为(wpf)?

0 投票
1 回答
1011 浏览

c# - 在 Avalonia 中根据 DataContext 属性选择 DataTemplate

我正在实现一个应该显示设置列表的 UserControl:

应根据每种类型ValueType使用不同的 DataTemplate。
为方便起见,UserControl 具有以下控件,其中 aSettingPropertyItem作为其 DataContext:

然后在使用 Usercontrol 的视图中,我在其 DataTemplates 中添加了一个 DataTemplate:

到目前为止一切顺利,一切都按预期工作。但现在我有点难过,因为我不知道如何根据 DataContext 中的属性应用不同的 DataTemplates。
使用 WPF,DataTemplateSelector 或 Triggers 似乎是要走的路(忽略其他框架),但它们似乎在 Avalonia 中不存在。我也尝试过样式,但选择器似乎无法访问 DataContext 属性。

如何才能做到这一点?

0 投票
1 回答
467 浏览

c# - Avalonia WriteableBitmap BitmapContext 上的工件

我正在尝试BitmapContext为 AvaloniaWrieableBitmap类编写 WriteableBitmapEx。代码成功地设置了我想要的颜色像素,并得到了它们,但是 BitmapContext 用我没有设置的颜色弄乱了一些像素。例如,我提供它应该设置 4 倍LightSalmon颜色,其余应该是#000000.

BitmapContext 看起来像这样:

设置和获取像素如下所示:

和例子:

输出:

LightSalmon我设置的颜色在哪里

还值得注意的是,当我不在GetPixel上下文中包装循环时,位图大小例如为 15x15 它会抛出

0 投票
0 回答
971 浏览

c# - 为什么拖放文件在 Avalonia 应用程序的窗口中不起作用?

我正在尝试使用 Avalonia 项目中包含的文件来实现拖放。 由于我无法使其正常工作,并且我认为这可能是一个特殊情况,因此我尝试制作一个类似的示例,例如ControlCatalogStandalone中的示例。 虽然ControlCatalogStandalone中的代码按预期工作,但我的测试应用程序中几乎相同的代码不能正常工作。ControlCatalogStandalone 中的相关代码属于 UserControl,在我的应用程序中它属于. 这可能是不当行为的原因吗? 我创建了一个新的Avalonia MVVM 应用程序ListBoxWindow
ListBox

MainWindow
基于0.9.11Visual Studio 2019 中的 NuGet 包。
我也尝试过版本0.10.0-preview2
这是 XAML 文件:

这是背后的代码:

应用程序中的拖放ControlCatalogStandalone 我的应用程序中运行良好。在这种情况下
,事件的连续性是DoDrag, DragOver, DragOver, ...。 将文件从 Windows 资源管理器拖到ControlCatalogStandalone效果很好。 事件的连续性是, , ..., 将文件从 Windows 资源管理器拖动到我的应用程序不起作用。 这里没有调用任何预期的事件。 我的测试应用程序有什么问题?Drop


DragOverDragOverDrop




0 投票
1 回答
889 浏览

c# - 如何在 Avalonia 应用程序中为 OpenFolderDialog 设置标题?

我正在使用OpenFileDialog,SaveFileDialogOpenFolderDialog在 Avalonia 应用程序中。
一个要求是将标题设置为某个字符串。
我实现了这一点OpenFileDialogSaveFileDialog不是。拒绝应用标题,因此只有根据操作系统语言的默认标题保持设置。 我发现在ControlCatalogStandalone中工作正确,即可以根据需要设置标题。 因此,我尝试将ControlCatalogStandalone简化为Dialogs功能,并将其转换为尽可能类似于我的测试应用程序。OpenFolderDialog
OpenFolderDialog

OpenFolderDialog

我无法做到这一点,但我发现了一些线索,可以帮助更熟练的开发人员找到我的测试应用程序行为不端的原因。ControlCatalogStandalone

SolutionProject的结构和组成与我的 Avalonia 测试应用程序大不相同。 在我的测试应用程序中,目标框架是. 在ControlCatalogStandalone解决方案的一个项目中,目标框架是. 所以,我认为在. 我还认为,如果ControlCatalogStandalone是使用当前版本的
.NET Core 3.1
.NET Standard 2.0
OpenFolderDialog.NET Standard.NET Core
Avalonia for Visual Studio扩展,它不会产生框架的混合。

以下是我的测试应用程序的相关代码部分:

MainWindow.axaml:

MainWindowViewModel.cs:

MainWindow.axaml.cs:

我正在显示最后一个文件,因为我无法 Window GetWindow() => (Window)this.VisualRoot;在我的 ViewModel 中实现该方法,该方法在ControlCatalogStandalone中被实现并在后面的代码中使用DialogsPage(实际上是 a UserControl)。
因此,我实现了Instance可能是 hack 的属性。
如果您也可以给我提示最佳实践以获取实例,MainWindow我会很高兴。

我的问题是无法在实现OpenFolderDialog的未解决问题中设置标题.NET Core,还是你能告诉我如何让它在我的简单测试应用程序中工作?

0 投票
1 回答
1627 浏览

c# - 是否可以从 System.Drawing.Bitmap 创建 Avalonia.Media.Imaging.Bitmap?

我正在 Avalonia 中编写一个应用程序并使用 OpenCvSharp 从相机中获取帧。这适用于 WPF - 我刚刚打电话给

但这在 Avalonia 中不起作用,因为存在不同类型的Image控件,以及不同类型的Source属性。

我尝试通过MemoryStream执行此操作,但随后Bitmap构造函数因ArgumentNullException崩溃(尽管流不为空)。