2012-04-16 40 views
14

Chương trình sau đây sẽ khóa lại một cách sinh sản bất cứ khi nào người dùng thay đổi bố trí bàn phím thông qua tổ hợp phím. Nó không bị khóa nếu bố trí bàn phím được thay đổi thông qua applet khay. Nó không khóa khi thay đổi cách bố trí sang tiếng Anh. Nó không khóa nếu Task không bao giờ thực thi.Chương trình WPF rất đơn giản bị khóa (treo) khi thay đổi bố cục bàn phím

XAML:

<StackPanel> 
    <TextBox></TextBox> 
    <Button Click="Button_Click">Click me</Button> 
</StackPanel> 

C#:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Task.Factory.StartNew(() => 
    { 
     var visual = new DrawingVisual(); 
     using (var context = visual.RenderOpen()) 
     { 
     } 
    }); 
} 

Trước khi nút bấm, tôi có thể chuyển đổi bố trí bàn phím như tôi hài lòng. Sau khi nhấp vào chương trình sẽ khóa lần đầu tiên để chuyển bố cục.

Quan trọng hơn, lỗi này chỉ xảy ra nếu bố trí được chuyển qua Alt + phím Shift + hay Ctrl + phím Shift + (và , nhưng không).

Đó là cách, quá muộn để tránh việc sử dụng DrawingVisual trên chủ đề nền. Điều này đã trở thành một tính năng cốt lõi, tích hợp của sản phẩm. Bất kỳ ý tưởng nào về cách làm việc này đều rất được hoan nghênh.

Lỗi này sao chép trên .NET 4.0, Win7 32 bit và 64 bit.

Bounty: lỗi này ảnh hưởng rất ít người về tỷ lệ phần trăm, nhưng những nó không ảnh hưởng đến liên tục sẽ gây ra các khóa-up (với sự mất mát dữ liệu tương ứng) mỗi khi họ có thói quen thay đổi cách bố trí bàn phím thông qua các phím tắt. Tôi muốn một công việc xung quanh mà không thay đổi thực tế là một số hình ảnh được trả về một chủ đề riêng biệt.

+0

Chỉ muốn cho bạn biết rằng tôi chưa gặp sự cố này trên .Net 4.0. Tuy nhiên, không thể thử nghiệm nó trên 4.5. –

+0

Tương tự đối với tôi - nó hoạt động tốt trên .Net 4.0. Tôi nghĩ rằng bạn có thể báo cáo lỗi dưới dạng .Net 4.5 nếu bạn có thể tạo lại nó trên cài đặt cửa sổ sạch .Net 4.5 – Nikolay

+0

@Nikolay bất kỳ cơ hội nào bạn có thể thử định cấu hình bố cục bàn phím để thay đổi khi bạn nhấn 'Alt + Shift + 2' ? Tôi đã thực hiện điều này xảy ra trên .NET 4 với điều đó. –

Trả lời

8

Official Microsoft answer:

Vấn đề này sẽ không [t] được giải quyết trong phiên bản tiếp theo của WPF. -WPF Team.

Tôi đoán tất cả chúng đều quá bận với WinRT và WPF là trên đầu ghi.

+0

Việc đăng WM_INPUTLANGCHANGEREQUEST lên chương trình WPF cũng sẽ khóa nó theo cách giống nhau, bất kể phím nào được sử dụng để thực hiện việc này. Ngoài ra, trong Win10, tìm kiếm menu Start sẽ khóa lại để phản hồi lại Alt + Shfit + 1/2. –

Các vấn đề liên quan