我没有在我的应用程序中附加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#)?
有没有办法在触发命令之前或之后更新绑定?我有一些文本字段,我可以使用命令编辑和保存,可通过键盘快捷方式访问.由于绑定通常仅在文本字段失去焦点时更新,因此在按下键以保存数据时不会保留最后一次更改.相反,我必须首先跳出文本字段以使其更新然后保存.
有没有办法以优雅的方式强制更新?我正在使用MVVM(但不是任何MVVM框架),所以我想保留命令代码中的UI特定内容.此外,我真的不想在每次更改时更改绑定以更新,只有在焦点丢失时才更新它.
我创建了一些文本框,我希望用户在其中输入十进制值.在我曾经使用的每个应用程序中,当我在文本框中键入内容并按Enter键时,该值被接受并且文本框失去焦点.我怎么能在我的应用程序中执行此操作?我知道用一个关键事件做它应该相对容易,但也许有一个命令或什么的.我搜索了stackoverflow,但我发现有关如何在输入后保持焦点的问题...
我正在尝试在按下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) 我是 WPF 的新手,我看到了最好的模式调用 MVVM。我尝试深入研究,发现该命令只能在按钮或菜单项等上执行。完成我的编辑。我有谷歌这个,但我没有从所有答案中得到任何答案。所以希望大家帮帮我。在文本框中按回车键时如何执行命令?