2010-03-06 30 views
7

Ứng dụng của tôi có biểu tượng khay, khi nhấp đúp, ẩn hoặc hiển thị cửa sổ ứng dụng. Vấn đề của tôi là tôi dường như không thể mang cửa sổ đến nền trước nếu nó ở trạng thái thu nhỏ khi nó bị ẩn. Ví dụ:WPF: Cửa sổ được giảm thiểu ngay cả khi cài đặt WindowState rõ ràng

Ví dụ: giả sử người dùng thu nhỏ ứng dụng và sau đó nhấp đúp vào biểu tượng khay. Cửa sổ ứng dụng sau đó bị ẩn và biến mất khỏi thanh tác vụ. Khi người dùng nhấp đúp vào biểu tượng khay một lần nữa, cửa sổ ứng dụng sẽ xuất hiện, tức là cửa sổ ứng dụng sẽ được khôi phục từ trạng thái thu nhỏ và được đưa vào nền trước.

Đoạn code dưới đây phải làm việc đó, nhưng đối với một số lý do nó không:

private void TrayIcon_DoubleClick(object sender, EventArgs e) 
{ 
    if (this.Visibility == Visibility.Hidden) 
    { 
     this.Visibility = Visibility.Visible; 
     this.WindowState = WindowState.Normal; 
     this.Activate(); 
    } 
    ... 
} 

ứng dụng được giữ nguyên hạn chế tối đa và không được đưa đến foreground. Kích hoạt() trả về các cuộc gọi thực và sau đó đến TrayIcon_DoubleClick() cho biết rằng trạng thái thực sự được đặt thành Bình thường.

Trả lời

12

Tôi đã đăng câu hỏi của mình trên Diễn đàn MSDN và it got answered there. Để báo câu trả lời:


Một số thuộc tính trên Cửa sổ giống như phương pháp, trong trường hợp chúng gây ra hành động phức tạp, cần phải xảy ra sau khi hành động trước đó đã hoàn tất. Một cách để điều đó xảy ra là sử dụng Dispatcher.BeginInvoke. Nếu bạn thay đổi mã của mình để trông như thế này, mã sẽ hoạt động:

if (this.Visibility == Visibility.Hidden) 
{ 
    this.Visibility = Visibility.Visible; 
    Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, 
     new Action(delegate() 
     { 
      this.WindowState = WindowState.Normal; 
      this.Activate(); 
     }) 
    ); 
} 

Tôi đã thử cách này và khắc phục sự cố cho tôi. Ngoài ra, tôi nghĩ bạn cũng có thể bỏ qua số this.Activate().

+5

Ok, điều đó khắc phục được sự cố nhưng bạn không nghĩ vậy? Ý tôi là, làm thế nào bạn có thể biết khi nào bạn có thể sử dụng tài sản hay không? Tôi thấy điều này rất lạ ... –

1

Tôi đã tìm thấy một cách tốt hơn. Khi vấn đề xảy ra khi thay đổi hiển thị của cửa sổ và cửa sổ nhà nước những gì tôi làm là thay đổi tài sản ShowInTaskBar thay vì Visibility. Dù sao, một cửa sổ thu nhỏ với ShowInTaskBar = true giống như một cửa sổ ẩn.

0

Từ góc độ người dùng Nhấp vào biểu tượng thu nhỏ Sau đó, danh sách này sẽ hiển thị danh sách tất cả các phiên bản của ứng dụng. nhấp chuột phải vào thành viên của danh sách này chọn tối đa hóa. Lưu ý rằng việc nhấp chuột phải vào biểu tượng thu nhỏ sẽ hiển thị menu có tùy chọn đóng. Để có tùy chọn Phóng to, bạn cần nhấp chuột phải vào danh sách xuất hiện khi bạn nhấp vào biểu tượng.

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