2012-10-16 13 views
5

Używam WPF. Mam klasę statyczną, która wykonuje niektóre ustawienia niedostępne w trybie projektowania. Ten konstruktor zostaje wywołany przez okno w trybie projektowania, co powoduje zgłoszenie wyjątku.Wykrywanie trybu projektowania za pomocą WPF w metodzie statycznej

Jak wykryć tryb projektowania metodą statyczną, aby móc wywołać zachowanie w trybie projektowania?

Urządzenie recommended approach nie działa w przypadku metod statycznych.


Edit:

Statyczny konstruktor jest wywoływany z XAML, więc nie mogę nazwać warunkowo (chyba przenieść rozmowę do kodu źródłowego, który chciałbym uniknąć).

w oknie: <Window ... HelpProvider.Keyword="some_help_topic.html">

W klasie:

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

    // Add a WPF command binding 
} 
+0

Sprawdź tryb projektowania w swoim oknie i sprawdź, czy musisz wywołać tam metodę statycznej konfiguracji. –

+0

Jeśli to nie działa, podaj fragment kodu, który próbujesz wykonać. –

+0

Myślałem, że mam to, ale nie widzę, żebyś nie chciał używać kodu z tyłu i że miałeś takie dziwne warunki. Przepraszam. Zalecane jest używanie 'DesignerProperties.GetIsInDesignMode (Application.Current.MainWindow)', ale w rzeczywistości nie wiem, czy działa to dla twojej dziwnej sytuacji. – Akku

Odpowiedz

4

Ewentualny sposób go rozwiązać utrzymując załączony właściwość w pliku XAML jest:

  1. Move inicjalizacji kod z konstruktora statycznego do załączonej właściwości zmienił wywołanie zwrotne. Szczerze mówiąc, nie jest dobrą praktyką wykonywanie tego rodzaju pracy w statycznych konstruktorach.
  2. W załączonej usłudze zmieniono wywołanie zwrotne, masz odniesienie do swojego okna. Możesz więc zadzwonić pod numer DesignerProperties.GetIsInDesignMode(yourwindow) i zdecydować, czy musisz załadować plik, czy jakkolwiek powoduje on problemy.
+0

Nice. Nie udało mi się znaleźć sposobu na przeniesienie kodu inicjalizacyjnego z konstruktora statycznego. – Mashmagar

Powiązane problemy