2012-11-16 20 views
21

Khi một dự án Ứng dụng WPF mới được tạo, MainWindow.xaml, App.xaml và mã tương ứng của chúng ở phía sau các lớp được tạo tự động. Trong số App.xaml có thuộc tính xác định cửa sổ nào sẽ được chạy ban đầu và theo mặc định là StartupUri="MainWindow.xaml"Làm thế nào để tùy chỉnh khởi động ứng dụng WPF?

Tôi đã tạo một lớp Dispatcher mới trong cùng một dự án. Khi khởi động, tôi muốn thể hiện của lớp đó Dispatcher được xây dựng và sau đó một trong các phương thức của nó để chạy. Phương thức đó sẽ thực sự tạo và hiển thị cửa sổ MainWindow. Vậy làm thế nào để tôi sửa đổi App.xaml hoặc App.xaml.cs để làm cho nó xảy ra? Hoặc, nếu nó không thể được thực hiện bởi App, làm thế nào tôi nên thực hiện nó? Cảm ơn.

Trả lời

38

Bạn có thể xóa thuộc tính StartupUri khỏi App.xaml.

Sau đó, bằng cách tạo ghi đè cho OnStartup() trong App.xaml.cs, bạn có thể tạo phiên bản mới của lớp học Dispatcher.

Đây là những gì thực hiện app.xaml.cs nhanh chóng của tôi trông giống như:

public partial class App : Application 
{ 
    protected override void OnStartup(StartupEventArgs e) 
    { 
     base.OnStartup(e); 

     new MyClassIWantToInstantiate(); 
    } 
    } 
} 

Cập nhật

thời gian gần đây tôi phát hiện ra this workaround cho một lỗi nếu bạn sử dụng phương pháp này để tùy chỉnh khởi động ứng dụng và đột nhiên none của tài nguyên cấp ứng dụng có thể được tìm thấy.

+0

Vâng, cảm ơn bạn, hoạt động. – Boris

+0

Bạn có thể giải thích về những gì MyClassIWantToInstantiate() nên được? Tôi đã cố gắng MainWindow đó là lớp của cửa sổ chính của ứng dụng WPF của tôi và không có gì xảy ra sau đó ... Đó là mã sự kiện được tải không thực thi. –

+0

Lớp học thực sự có thể là nhu cầu của bạn. Để hiển thị một góa phụ, bạn sẽ phải khởi tạo nó, sau đó gọi 'Show()' để hiển thị nó. –

2

Hãy thử sử dụng sự kiện khởi động (ứng dụng lớp) - MSDN.

Bạn có thể hiển thị MainWindow trong trình xử lý sự kiện này - sau khi bạn tạo một cá thể Bộ điều phối.

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