我没有在我的应用程序中为每个事件附加一个PreviewKeyUp
事件TextBox
并检查按下的键是否是 Enter 键然后执行操作,而是决定实现 a 的扩展版本,TextBox
其中包括一个 DefaultAction 事件,该事件在 a 中按下 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);
}
}
然后我使用我的应用程序中的这个自定义文本框,比如(xaml):
<Controls:DefaultTextBoxControl DefaultAction="DefaultTextBoxControl_DefaultAction">
</Controls:DefaultTextBoxControl>
现在,在我学习 WPF 的一点经验中,我意识到几乎大多数时候都有一种“更酷”(并且希望更容易)的方式来实现事物
...所以我的问题是,如何改善上述控制? 或者也许有另一种方法可以进行上述控制?...也许只使用声明性代码而不是声明性(xaml)和程序性(C#)?