【问题标题】:Trying to select text in Textbox in Dialog when gaining Focus获得焦点时尝试在对话框中的文本框中选择文本
【发布时间】:2014-05-01 15:03:51
【问题描述】:

我正在尝试在对话框中选择整个文本,但我无法这样做。

我有一个类Participant,它有一个属性Firstname。当我在对话中设置参与者时,我正在调用焦点方法。但是,当对话框打开时,它只是处于焦点中而不是被选中。

这是我的专注法:

public void FocusSurname()
{
        SurnameBox.SelectAll();
        SurnameBox.Focus();
        Keyboard.Focus(SurnameBox);
}

在对话框中,我将我的参与者设置如下:

Participant Participant
    {
        get { return _participant; }
        set
        {
           _participant = value;
           FocusSurname();
        }
 }

我的对话框开源代码差不多:

 public void ShowDialog(object owner)
 {
     Owner = owner as Window;
     ShowDialog();
 }

为什么没有选择文本? :(

即使我在 ShowDialog-Method 中调用 FocursSurname,也没有任何变化。

【问题讨论】:

    标签: c# wpf mvvm waf-framework-c#


    【解决方案1】:

    您想要完成的是查看相关代码(在我看来)。 mvvm 指导或模式使用(或至少我对它的理解)声明您要为此使用行为或附加属性。意味着将 xaml 功能扩展到插件视图相关的行为...

    我发现了一个与您的主题相关的 stackoverflow 问题。看看这是否有帮助...或尝试从该解决方案中得出...

    链接:

    Initial Focus and Select All behavior

    HTH

    【讨论】:

    • 感谢您的回答。事实上,我已经在使用一种行为来解决这个问题,但这并不能完全解决我的问题。 - 如果我失去焦点并重新获得它,文本框中的文本会像我希望的那样被选中。但是当我的对话框弹出时,我无法弄清楚如何在开始时选择文本......这里的问题是我的 TextBox 将由 PropertyChangedEvent 通知,不幸的是,这不止一次。首先使用默认值,然后使用我想要的值 - 应该选择它。我不知道如何解决这个问题:(
    【解决方案2】:

    将以下事件处理方法绑定到文本框的 GotFocus 事件

    private static void SelectText(object sender, RoutedEventArgs e)
    {
        var textBox = e.OriginalSource as TextBox;
    
        Keyboard.Focus(textBox);
        textBox.SelectAll();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多