usingSystem.ComponentModel;usingSystem.Windows;usingSystem.Windows.Controls;publicclassMyUserControl:UserControl{publicMyUserControl(){if(DesignerProperties.GetIsInDesignMode(this)){// Design-mode specific functionality}}}
J'ai appliqué votre solution dans mon application mais cela ne fonctionne pas. Je l'ai demandé ici stackoverflow.com/questions/3987439/… . Si vous le souhaitez, rejoignez-nous et discutez-en.
Dans VS2019, le commutateur Enable project codedoit être activé (ou Menu-> Design-> 🗹 Run Project Code).
marbel82
47
Dans certains cas, j'ai besoin de savoir si un appel à ma classe non-UI est lancé par le concepteur (comme si je crée une classe DataContext à partir de XAML). Ensuite, l'approche de cet article MSDN est utile:
// Check for design mode. if((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)){//in Design mode}
J'ai appliqué votre solution dans mon application mais cela ne fonctionne pas. Je l'ai demandé ici stackoverflow.com/questions/3987439/… . Si vous le souhaitez, rejoignez-nous et discutez-en.
Nam G VU
20
Pour tous les contrôles WPF hébergés dans WinForms , DesignerProperties.GetIsInDesignMode(this)ne fonctionne pas.
Cette classe ( Windows.ApplicationModel) est destinée aux applications Store, incluses dans l'API Windows Runtime. Ce n'est pas une solution WPF prête à l'emploi si vous travaillez uniquement sur une application de bureau Windows standard.
Réponses:
En effet, il y a :
System.ComponentModel.DesignerProperties.GetIsInDesignMode
Exemple:
la source
Enable project code
doit être activé (ou Menu-> Design-> 🗹 Run Project Code).Dans certains cas, j'ai besoin de savoir si un appel à ma classe non-UI est lancé par le concepteur (comme si je crée une classe DataContext à partir de XAML). Ensuite, l'approche de cet article MSDN est utile:
la source
Pour tous les contrôles WPF hébergés dans WinForms ,
DesignerProperties.GetIsInDesignMode(this)
ne fonctionne pas.J'ai donc créé un bogue dans Microsoft Connect et ajouté une solution de contournement:
la source
GetEntryAssembly()
place deGetExecutingAssembly()
? Ce dernier devrait renvoyer l'assemblage où cette propriété est définieRéponse tardive, je sais - mais pour tous ceux qui souhaitent utiliser ceci dans un
DataTrigger
, ou n'importe où dans XAML en général:la source
Utilisez celui-ci:
(Les opérations Async et File ne fonctionneront pas ici)
En outre, pour instancier un objet au moment du design en XAML (d est l'espace de noms du concepteur spécial)
la source
Windows.ApplicationModel
) est destinée aux applications Store, incluses dans l'API Windows Runtime. Ce n'est pas une solution WPF prête à l'emploi si vous travaillez uniquement sur une application de bureau Windows standard.