2012-10-16 10 views
5

Sto utilizzando WPF. Ho una classe statica che esegue alcune impostazioni non disponibili durante la modalità di progettazione. Questo costruttore viene chiamato da una finestra in modalità progettazione, il che comporta il lancio di un'eccezione.Rilevamento della modalità di progettazione utilizzando WPF in un metodo statico

Come si rileva la modalità di progettazione in un metodo statico, quindi è possibile richiamare il comportamento della modalità di progettazione appropriata?

recommended approach non funziona con metodi statici.


Edit:

Il costruttore statico viene chiamato da XAML, quindi non posso condizionalmente chiamare (a meno che non mi sposto la chiamata a code-behind, che mi piacerebbe evitare).

Nella finestra: <Window ... HelpProvider.Keyword="some_help_topic.html">

Nella classe:

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

    // Add a WPF command binding 
} 
+0

Controllare la modalità di progettazione nella finestra e determinare se è necessario chiamare il metodo di installazione statico lì. –

+0

Nel caso in cui ciò non funzioni per te, fornisci uno snippet di codice che stai cercando di realizzare, per favore. –

+0

Pensavo di averlo, ma non ho visto che non volevi usare il codice dietro e che avevi condizioni così strane. Scusate. Consigliato per usare 'DesignerProperties.GetIsInDesignMode (Application.Current.MainWindow)', ma in realtà non so se questo funziona per la tua strana situazione. – Akku

risposta

4

Il modo possibile per risolverlo mantenere proprietà associata nel file XAML è:

  1. Sposta codice di inizializzazione dal costruttore statico alla proprietà allegata è cambiato il callback. Parlando francamente, non è una buona pratica fare questo tipo di lavoro con costruttori statici.
  2. Nella proprietà associata ha cambiato la callback con riferimento alla finestra. Quindi puoi chiamare lo DesignerProperties.GetIsInDesignMode(yourwindow) lì e decidere, se hai bisogno di caricare il file o qualsiasi altra cosa causi problemi.
+0

Bello. Non ero riuscito a capire come spostare il codice di inizializzazione dal costruttore statico. – Mashmagar

Problemi correlati