PreviewKeyUp
アプリでそれぞれにイベントを添付しTextBox
、押されたキーが Enter キーであるかどうかを確認してからアクションを実行する代わりにTextBox
、 で Enter キーが押されたときに発生する DefaultAction イベントを含む の拡張バージョンを実装することにしましたTextBox
。
私がしたことは、基本的に次のようなTextBox
public eventから拡張する新しい Class を作成することでした: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#) の両方ではなく、宣言型コードのみを使用していますか?