gpt4 book ai didi

wpf - 如何将焦点设置在 AND SELECT ALL 初始文本框(MVVM 样式)上?

转载 作者:行者123 更新时间:2023-12-04 19:55:57 24 4
gpt4 key购买 nike

我有一个简单的 WPF 页面,其中有一个文本框字段,我的客户希望在页面显示时突出显示该字段。在后面的代码中,它将是三行,但我正在通过 MVVM(我开始认为它有点被高估了)。我尝试了许多不同的行为和全局事件变体以及 FocusManager.FocusedElement ,但我做什么都不会这样做。

最终,我使用的大部分代码都调用了这两行:

Keyboard.Focus(textBox);
textBox.SelectAll();

但无论我把这些行放在哪里,文本框都只聚焦;未选择任何文本。我从来没有在这么简单的事情上遇到过这么多麻烦。我已经在互联网上打了两个小时的头。有谁知道如何做到这一点?

同样,我想要做的就是让文本框获得焦点,并且在导航到页面时选择所有文本。请帮忙!

最佳答案

“焦点”和“从文本框中选择所有文本”是 查看特定关注 .

把它放在后面的代码中。它根本不会破坏 MVVM 的分离。

public void WhateverControl_Loaded(stuff)
{
Keyboard.Focus(textBox);
textBox.SelectAll();
}

如果您需要响应特定的应用程序/业务逻辑。创建附加属性。

或:

让您的 View 通过以下方式解析 ViewModel:
this.DataContext as MyViewModel;

然后在 ViewModel 中创建一些您可以 Hook 的事件:
public class MyViewModel
{
public Action INeedToFocusStuff {get;set;}

public void SomeLogic()
{
if (SomeCondition)
INeedToFocusStuff();
}
}

然后在 View 中连接它:
public void Window_Loaded(Or whatever)
{
var vm = this.DataContext as MyViewModel;
vm.INeedToFocusStuff += FocusMyStuff;
}

public void FocusMyStuff()
{
WhateverTextBox.Focus();
}

看看这个简单的抽象是如何将 View 相关的东西保留在 View 中,并将 ViewModel 相关的东西保留在 ViewModel 中,同时允许它们进行交互。把事情简单化。 WPF 应用程序不需要 NASA 的服务器。

没有 MVVM 不会被高估,MVVM 非常有帮助,我会说甚至是必要的。一旦您开始使用诸如 ListBox 之类的 ItemsControls,您就会很快意识到这一点。 es 或 DataGrid s。

关于wpf - 如何将焦点设置在 AND SELECT ALL 初始文本框(MVVM 样式)上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21026208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com