相关疑难解决方法(0)

WPF:一个TextBox,它有一个按下Enter键时触发的事件

我没有在我的应用程序中附加PreviewKeyUp事件TextBox并检查按下的键是否为Enter键然后执行操作,而是决定实现TextBox包含DefaultAction事件的扩展版本,该事件在按下Enter键时触发TextBox.

我所做的基本上是创建一个新的类,从TextBox公共事件延伸DefaultAction,如下:

public class DefaultTextBoxControl:TextBox
{
    public event EventHandler<EventArgs> DefaultAction = delegate { };

    public DefaultTextBoxControl()
    {
        PreviewKeyUp += DefaultTextBoxControl_PreviewKeyUp;
    }

    void DefaultTextBoxControl_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (e.Key != Key.Enter)
        {
            return;
        }
        DefaultAction(this, EventArgs.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用我的应用程序中的这个自定义文本框,如(xaml):

<Controls:DefaultTextBoxControl  DefaultAction="DefaultTextBoxControl_DefaultAction">
</Controls:DefaultTextBoxControl>
Run Code Online (Sandbox Code Playgroud)

现在,在我学习WPF的过程中,我已经意识到几乎大多数时候都有一种"更酷"(希望更容易)的方式来实现

...所以我的问题是,我怎样才能改善上述控制? 或者是否有另一种方法可以进行上述控制?...也许只使用声明性代码而不是声明性(xaml)和程序性(C#)?

c# wpf xaml custom-controls

19
推荐指数
3
解决办法
8万
查看次数

强制绑定以在触发Command时更新

有没有办法在触发命令之前或之后更新绑定?我有一些文本字段,我可以使用命令编辑和保存,可通过键盘快捷方式访问.由于绑定通常仅在文本字段失去焦点时更新,因此在按下键以保存数据时不会保留最后一次更改.相反,我必须首先跳出文本字段以使其更新然后保存.

有没有办法以优雅的方式强制更新?我正在使用MVVM(但不是任何MVVM框架),所以我想保留命令代码中的UI特定内容.此外,我真的不想在每次更改时更改绑定以更新,只有在焦点丢失时才更新它.

wpf binding command mvvm

10
推荐指数
3
解决办法
1万
查看次数

WPF如何在输入后使文本框失去焦点

我创建了一些文本框,我希望用户在其中输入十进制值.在我曾经使用的每个应用程序中,当我在文本框中键入内容并按Enter键时,该值被接受并且文本框失去焦点.我怎么能在我的应用程序中执行此操作?我知道用一个关键事件做它应该相对容易,但也许有一个命令或什么的.我搜索了stackoverflow,但我发现有关如何在输入后保持焦点的问题...

c# wpf textbox focus

10
推荐指数
1
解决办法
1万
查看次数

Enter Key Up上的WPF验证

我正在尝试在按下Enter键时验证UI更改.UI元素是一个文本框,它是绑定到字符串的数据.我的问题是当Enter键为Up时数据绑定没有更新TestText.只有在按下弹出消息框的按钮时才会更新.

/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window, INotifyPropertyChanged
{
    String _testText = new StringBuilder("One").ToString();
    public string TestText
    {
        get { return _testText; }
        set { if (value != _testText) { _testText = value; OnPropertyChanged("TestText"); } }
    }


    public Window1()
    {
        InitializeComponent();
        myGrid.DataContext = this;
    }

    private void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void onKeyUp(object sender, KeyEventArgs e)
    { …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf

6
推荐指数
1
解决办法
4453
查看次数

按回车键时在文本框上执行命令

我是 WPF 的新手,我看到了最好的模式调用 MVVM。我尝试深入研究,发现该命令只能在按钮或菜单项等上执行。完成我的编辑。我有谷歌这个,但我没有从所有答案中得到任何答案。所以希望大家帮帮我。在文本框中按回车键时如何执行命令?

c# wpf xaml mvvm

1
推荐指数
1
解决办法
2484
查看次数

标签 统计

wpf ×5

c# ×3

mvvm ×2

xaml ×2

binding ×1

command ×1

custom-controls ×1

data-binding ×1

focus ×1

textbox ×1