Comment : modifier le comportement d'une propriété au moment du design
Lorsque vous utilisez l'extensibilité pour personnaliser le Concepteur WPF pour Visual Studio, vous créez souvent des contrôles personnalisés. Toutefois, vous souhaitez parfois qu'une propriété du contrôle se comporte différemment au moment du design qu'au moment de l'exécution, tout en permettant à l'utilisateur de définir normalement la valeur de la propriété. Par exemple, vous souhaitez que l'utilisateur puisse affecter la valeur false à la propriété visible d'un contrôle, mais celui-ci doit rester visible au moment du design.
Cette rubrique décrit les procédures à suivre pour modifier le comportement au moment du design de propriétés de contrôles personnalisés. Pour obtenir un exemple plus détaillé des procédures, consultez Procédure pas à pas : modification du comportement d'une propriété au moment du design.
Important
Lorsque vous utilisez cette technique, le comportement d'une propriété dans le concepteur ne correspond pas à la valeur de la propriété en mode XAML. En effet, le mode XAML affiche la valeur que l'utilisateur a entrée au moment du design. La valeur en mode XAML représente le comportement de la propriété au moment de l'exécution.
Si vous souhaitez uniquement déterminer qu'un contrôle est un contrôle DTC et définir ses propriétés en conséquence, consultez Comment : déterminer si un contrôle personnalisé est un contrôle DTC ou un contrôle runtime.
Création d'un DesignModeValueProvider personnalisé
Dans cette procédure, vous créez une classe DesignModeValueProvider personnalisée. Dans la méthode TranslatePropertyValue, vous ajoutez la logique personnalisée pour le nouveau comportement des propriétés à modifier. Ces modifications concernent le concepteur uniquement. Au moment de l'exécution, les propriétés se comportent telles que définies par l'utilisateur.
Pour créer un DesignModeValueProvider personnalisé
Dans votre projet, ajoutez une référence à l'assembly suivant :
- Microsoft.Windows.Design.Extensibility
Ajoutez une nouvelle classe à votre projet de contrôle personnalisé et modifiez la classe pour qu'elle hérite de DesignModeValueProvider. Elle doit se présenter comme suit :
Public Class YourCustomDesignModeValueProvider Inherits Microsoft.Windows.Design.Model.DesignModeValueProvider End Class
class YourCustomDesignModeValueProvider : Microsoft.Windows.Design.Model.DesignModeValueProvider { }
Ajoutez un constructeur à la classe. Dans le constructeur, vous identifiez les propriétés à capturer.
Public Sub New() 'Properties.Add(<The Property To Change Goes Here>) 'More properties can go here. End Sub
public YourCustomDesignModeValueProvider() { //Properties.Add(<The Property To Change Goes Here>); //More properties can go here. }
Substituez la méthode TranslatePropertyValue de la classe. C'est ici que vous spécifiez le nouveau comportement des propriétés au moment du design.
Public Overrides Function TranslatePropertyValue( _ ByVal item As ModelItem, _ ByVal identifier As PropertyIdentifier, _ ByVal value As Object) As Object 'If identifier.Name = <Name of the property to change> Then ' ' Custom logic goes here. 'End If 'More custom logic for more properties can go here. Return MyBase.TranslatePropertyValue(item, identifier, value) End Function
public override object TranslatePropertyValue(ModelItem item, PropertyIdentifier identifier, object value) { //if (identifier.Name == <Name of the property to change>) //{ // Custom logic goes here. //} //More custom logic for more properties can go here. return base.TranslatePropertyValue(item, identifier, value); }
Notes
Dans cette procédure, vous créez un DesignModeValueProvider qui gère deux propriétés différentes. Vous pouvez également créer plusieurs objets DesignModeValueProvider pour gérer des propriétés différentes.
Attachement de DesignModeValueProvider au contrôle personnalisé
Dans cette procédure, vous attachez DesignModeValueProvider à votre contrôle personnalisé à l'aide de l'attribut FeatureAttribute.
Pour attacher DesignModeValueProvider au contrôle personnalisé
Localisez la déclaration de classe de votre contrôle personnalisé. Elle doit se présenter comme suit :
Public Class YourCustomControl
class YourCustomControl
Ajoutez un attribut FeatureAttribute à la déclaration de classe, puis spécifiez le DesignModeValueProvider que vous avez créé dans la procédure précédente.
<Microsoft.Windows.Design.Features.Feature(GetType(YourCustomDesignModeValueProvider))> _ Public Class YourCustomControl
[Microsoft.Windows.Design.Features.Feature(typeof(YourCustomDesignModeValueProvider))] class YourCustomControl
Notes
Vous pouvez également attacher un DesignModeValueProvider à un contrôle personnalisé en fournissant une table d'attributs. Pour plus d'informations, consultez Mise à disposition de métadonnées au moment du design.
Voir aussi
Autres ressources
Comportement au moment du design et au moment de l'exécution