在 Avalonia MVVM 应用程序中输入焦点文本框

问题描述 投票:0回答:1

我正在使用 .NET 8、Avalonia UI 和社区工具包 MVVM 编写触摸屏应用程序。

在我看来,我有三个文本框。 我创建了一个 UserControll,它是一个数字键盘,将在视图中使用它来生成聚焦的一个文本框的输入。粘贴时文本框应成为焦点。

我的问题是,如何构建所有这些以遵循 MVVM 模式?

*文本框内容绑定到视图模型中的属性。

  • 小键盘按钮命令绑定到视图模型中的中继命令。
  • GotFocus 必须在后面的代码中处理,对吧?

我的尝试:

  • 我采用了一种方法,将焦点文本框传递到视图模型中的字段。然后,视图模型编辑此文本框并使其保持焦点。 这显然违反了 MVVM,因为 TextBox 是一个视图元素。.
  • 我还使用了另一种类似的方法,在视图后面的代码中使用focusedTextBox 的字段。这里的小键盘按钮命令也绑定到视图后面的代码中的函数。
c# .net avaloniaui avalonia community-toolkit-mvvm
1个回答
0
投票

要维护 MVVM,请将 TextBoxes 绑定到 ViewModel 中的属性,并在代码隐藏中处理 GotFocus 以跟踪当前聚焦的 TextBox。在 ViewModel 中存储聚焦文本框的标识符,并将数字键盘按钮命令绑定到 RelayCommands,以根据当前焦点更新适当的属性。这将业务逻辑保留在ViewModel中,同时允许在代码隐藏中处理特定于视图的焦点。

© www.soinside.com 2019 - 2024. All rights reserved.