2012-10-16 30 views
5

Tôi đang sử dụng WPF. Tôi có một lớp tĩnh thực hiện một số thiết lập không có sẵn trong chế độ thiết kế. Constructor này được gọi bởi một cửa sổ trong chế độ thiết kế, kết quả là một ngoại lệ bị ném.Phát hiện chế độ thiết kế bằng cách sử dụng WPF theo phương pháp tĩnh

Làm cách nào để phát hiện chế độ thiết kế theo phương pháp tĩnh, vì vậy tôi có thể gọi hành vi chế độ thiết kế phù hợp?

recommended approach không hoạt động đối với các phương pháp tĩnh.


Edit:

Các constructor tĩnh được gọi từ XAML, vì vậy tôi không thể có điều kiện gọi nó (trừ khi tôi di chuyển cuộc gọi đến mã phía sau, mà tôi muốn tránh).

Trong cửa sổ: <Window ... HelpProvider.Keyword="some_help_topic.html">

Trong lớp:

static HelpProvider() 
{ 
    // Load the .chm file from an application setting (this fails at design time) 

    // Add a WPF command binding 
} 
+0

Kiểm tra chế độ thiết kế trong cửa sổ của bạn và xác định xem bạn có cần gọi cho bạn phương thức thiết lập tĩnh ở đó không. –

+0

Trong trường hợp điều này không phù hợp với bạn, hãy cung cấp đoạn mã bạn đang cố gắng làm việc. –

+0

Nghĩ rằng tôi đã có nó nhưng không thấy bạn muốn không có mã sử dụng phía sau và rằng bạn đã có điều kiện kỳ ​​lạ như vậy. Lấy làm tiếc. Đề xuất sử dụng 'DesignerProperties.GetIsInDesignMode (Application.Current.MainWindow)', nhưng trên thực tế, tôi không biết điều này có phù hợp với tình huống kỳ lạ của bạn hay không. – Akku

Trả lời

4

Cách tốt để giải quyết nó giữ tài sản gắn liền trong file XAML là:

  1. Move mã khởi tạo từ constructor tĩnh vào thuộc tính đính kèm đã thay đổi gọi lại. Thành thật mà nói, nó không phải là thực hành tốt để làm như vậy loại công việc trong các nhà thầu tĩnh.
  2. Trong tài sản đính kèm của bạn đã thay đổi gọi lại, bạn có một tham chiếu đến cửa sổ của bạn. Vì vậy, bạn có thể gọi DesignerProperties.GetIsInDesignMode(yourwindow) ở đó và quyết định, nếu bạn cần tải tệp hoặc bất kỳ nguyên nhân nào gây ra sự cố.
+0

Tốt. Tôi đã không quản lý để làm việc ra làm thế nào để di chuyển mã khởi tạo ra khỏi constructor tĩnh. – Mashmagar

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