Tôi có một điều khiển tab và một vài mục tab. Tôi đang nghe thành công sự kiện SelectionChanged
và kiểm tra xem tab tôi quan tâm có phải là tab đang được chọn hay không.Tab WPFControl On SelectionChanged, đặt tiêu điểm thành trường văn bản
Tôi đang sử dụng mã này (bên dưới) và bước qua trình gỡ lỗi, tôi có thể thấy rằng logic phân nhánh của tôi hoạt động như được thiết kế; tuy nhiên, vấn đề tôi gặp phải là một cái gì đó đang ghi đè cuộc gọi này đến txt.Focus()
vì sau khi mục tab chính xác được hiển thị, tiêu điểm không nằm trên hộp văn bản.
private void tabMain_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
// exact same behavior with and without this line
e.Handled = true;
if (e.AddedItems.Contains(usrTab))
{
txtusr.Focus();
}
else if (e.AddedItems.Contains(svcTab))
{
txtsvc.Focus();
}
}
Nếu tôi chỉ đặt txtusr.Focus()
trong trình xử lý sự kiện nút, nó tập trung chính xác như tôi mong đợi.
Tôi nghi ngờ rằng điều này phải làm với nội dung tabitem không được tải tại thời điểm phương pháp .Focus()
được gọi, nhưng tôi không chắc chắn làm thế nào để đi về sửa chữa nó.
Bạn đã phân tách sự cố bên ngoài mã của mình để xem liệu mã có thể lặp lại không? Nếu vậy, đó là vấn đề về thời gian/khung và sau đó bạn có thể tiếp cận vấn đề một chút khác biệt với kiến thức đó trong tay. –
Tôi đã có thể tái tạo không chính xác điều này trong một chương trình sơ khai. – Nate