usingSystem.ComponentModel;usingSystem.Windows;usingSystem.Windows.Controls;publicclassMyUserControl:UserControl{publicMyUserControl(){if(DesignerProperties.GetIsInDesignMode(this)){// Design-mode specific functionality}}}
Ich habe Ihre Lösung in meiner Anwendung angewendet, aber sie funktioniert nicht. Ich habe es hier gefragt stackoverflow.com/questions/3987439/… . Wenn Sie möchten, schließen Sie sich uns an und diskutieren Sie.
In VS2019 Enable project codemuss der Schalter aktiviert sein (oder Menü-> Design-> 🗹 Projektcode ausführen).
marbel82
47
In einigen Fällen muss ich wissen, ob ein Aufruf meiner Nicht-UI-Klasse vom Designer initiiert wird (z. B. wenn ich eine DataContext-Klasse aus XAML erstelle). Dann ist der Ansatz aus diesem MSDN-Artikel hilfreich:
// Check for design mode. if((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)){//in Design mode}
Ich habe Ihre Lösung in meiner Anwendung angewendet, aber sie funktioniert nicht. Ich habe es hier gefragt stackoverflow.com/questions/3987439/… . Wenn Sie möchten, schließen Sie sich uns an und diskutieren Sie.
Nam G VU
20
Für alle WPF - Steuerelemente in WinForms gehostet , DesignerProperties.GetIsInDesignMode(this)funktioniert nicht.
Diese Klasse ( Windows.ApplicationModel) ist für Store-Apps vorgesehen, die in der Windows Runtime-API enthalten sind. Dies ist keine sofort einsatzbereite WPF-Lösung, wenn Sie nur an einer normalen Windows-Desktopanwendung arbeiten.
Antworten:
In der Tat gibt es :
System.ComponentModel.DesignerProperties.GetIsInDesignMode
Beispiel:
quelle
Enable project code
muss der Schalter aktiviert sein (oder Menü-> Design-> 🗹 Projektcode ausführen).In einigen Fällen muss ich wissen, ob ein Aufruf meiner Nicht-UI-Klasse vom Designer initiiert wird (z. B. wenn ich eine DataContext-Klasse aus XAML erstelle). Dann ist der Ansatz aus diesem MSDN-Artikel hilfreich:
quelle
Für alle WPF - Steuerelemente in WinForms gehostet ,
DesignerProperties.GetIsInDesignMode(this)
funktioniert nicht.Also habe ich einen Fehler in Microsoft Connect erstellt und eine Problemumgehung hinzugefügt:
quelle
GetEntryAssembly()
statt seinGetExecutingAssembly()
? Letzterer sollte die Assembly zurückgeben, in der diese Eigenschaft definiert istSpäte Antwort, ich weiß - aber für alle anderen, die dies in einer
DataTrigger
oder irgendwo in XAML im Allgemeinen verwenden möchten:quelle
Verwende das hier:
(Async- und Dateioperationen funktionieren hier nicht)
Zum Instanziieren eines Entwurfszeitobjekts in XAML (d ist der spezielle Designer-Namespace)
quelle
Windows.ApplicationModel
) ist für Store-Apps vorgesehen, die in der Windows Runtime-API enthalten sind. Dies ist keine sofort einsatzbereite WPF-Lösung, wenn Sie nur an einer normalen Windows-Desktopanwendung arbeiten.