Thay vì gắn một sự kiện PreviewKeyUp
với mỗi TextBox
trong ứng dụng của tôi và kiểm tra xem phím đã nhấn có phải là phím Enter hay không, hãy quyết định triển khai phiên bản mở rộng của TextBox
bao gồm sự kiện DefaultAction kích hoạt khi nhấn phím Enter trong TextBox
.WPF: Hộp văn bản có sự kiện kích hoạt khi phím Enter được nhấn
Những gì tôi đã làm được về cơ bản tạo ra một lớp mới mà kéo dài từ TextBox
với một sự kiện công cộng DefaultAction
, như ví dụ:
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);
}
}
sau đó tôi sử dụng hộp tùy chỉnh này từ ứng dụng của tôi như vậy (XAML):
<Controls:DefaultTextBoxControl DefaultAction="DefaultTextBoxControl_DefaultAction">
</Controls:DefaultTextBoxControl>
Bây giờ trong kinh nghiệm nhỏ của tôi tôi đã có trong việc học WPF tôi đã nhận ra rằng gần như hầu hết thời gian có một "mát" (và hy vọng dễ dàng hơn) wa y để triển khai mọi thứ
... vì vậy câu hỏi của tôi là, Làm cách nào để cải thiện điều khiển trên? Hoặc có thể có cách nào khác để tôi có thể thực hiện điều khiển trên không? ... có thể chỉ sử dụng mã khai báo thay vì cả khai báo (xaml) và thủ tục (C#)?
Nhưng với điều này, làm thế nào để bạn gán những gì sẽ xảy ra khi vào phím được nhấn? bởi vì mỗi TextBox thực hiện một cái gì đó khác nhau –
Oh! Tôi sẽ cập nhật câu trả lời. –
câu trả lời hay nhất! –