DesignModeValueProvider, classe
Mise à jour : novembre 2007
Capture les modifications de propriété apportées par l'utilisateur dans le concepteur et fournit de nouvelles valeurs au moment du design.
Espace de noms : Microsoft.Windows.Design.Model
Assembly : Microsoft.Windows.Design.Extensibility (dans Microsoft.Windows.Design.Extensibility.dll)
Syntaxe
Public Class DesignModeValueProvider _
Inherits FeatureProvider
Dim instance As DesignModeValueProvider
public class DesignModeValueProvider : FeatureProvider
public ref class DesignModeValueProvider : public FeatureProvider
public class DesignModeValueProvider extends FeatureProvider
Notes
Normalement, lorsqu'un utilisateur modifie une valeur de propriété d'un objet dans le concepteur, cette valeur est définie sur l'objet dans le concepteur. Grâce à la classe DesignModeValueProvider, vous pouvez insérer votre propre logique dans ce processus. 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.
Pour ce faire, vous créez un DesignModeValueProvider et l'attachez à votre contrôle personnalisé. DesignModeValueProvider capture les modifications de propriété apportées par l'utilisateur, vous insérez votre propre logique dans la méthode TranslatePropertyValue et DesignModeValueProvider passe les nouvelles valeurs au concepteur.
Remarque importante : |
---|
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. |
Exemples
L'exemple suivant crée un DesignModeValueProvider personnalisé qui sera attaché à un contrôle bouton personnalisé. Dans la méthode TranslatePropertyValue, vous modifiez la propriété Content de Button afin qu'il s'affiche en majuscules dans le concepteur. Vous modifiez également la propriété Background de Button afin qu'il s'affiche avec la couleur système par défaut dans le concepteur. Ces modifications concernent le concepteur uniquement. Au moment de l'exécution, les propriétés Content et Background s'affichent avec les valeurs définies par l'utilisateur.
Pour plus d'informations, consultez Procédure pas à pas : modification du comportement d'une propriété au moment du design.
Imports System
Imports System.Windows 'SystemColors
Imports System.Windows.Media 'SolidColorBrush
Imports System.Windows.Controls 'Button
Imports Microsoft.Windows.Design.Model 'DesignModeValueProvider
Namespace CustomButton
Public Class CustomButtonDesignModeValueProvider
Inherits DesignModeValueProvider
Public Sub New()
Properties.Add(Button.ContentProperty)
Properties.Add(Button.BackgroundProperty)
End Sub
Public Overrides Function TranslatePropertyValue(ByVal identifier As PropertyIdentifier, ByVal value As Object) As Object
If identifier.DependencyProperty Is Button.ContentProperty Then
Return value.ToString().ToUpper()
End If
If identifier.DependencyProperty Is Button.BackgroundProperty Then
Return New SolidColorBrush(SystemColors.ControlColor)
End If
Return MyBase.TranslatePropertyValue(identifier, value)
End Function
End Class
End Namespace
using System;
using System.Windows; //SystemColors
using System.Windows.Media; //SolidColorBrush
using System.Windows.Controls; //Button
using Microsoft.Windows.Design.Model; //DesignModeValueProvider
namespace CustomButton
{
class CustomButtonDesignModeValueProvider : DesignModeValueProvider
{
public CustomButtonDesignModeValueProvider()
{
Properties.Add(Button.ContentProperty);
Properties.Add(Button.BackgroundProperty);
}
public override object TranslatePropertyValue(PropertyIdentifier identifier, object value)
{
if (identifier.DependencyProperty == Button.ContentProperty)
{
return ((string)value).ToUpper();
}
if (identifier.DependencyProperty == Button.BackgroundProperty)
{
return new SolidColorBrush(SystemColors.ControlColor);
}
return base.TranslatePropertyValue(identifier, value);
}
}
}
Hiérarchie d'héritage
System.Object
Microsoft.Windows.Design.Features.FeatureProvider
Microsoft.Windows.Design.Model.DesignModeValueProvider
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi
Référence
Membres DesignModeValueProvider
Microsoft.Windows.Design.Model, espace de noms
Autres ressources
Comment : modifier le comportement d'une propriété au moment du design
Architecture de l'extensibilité du concepteur WPF
Architecture d'édition de propriété
Fournisseurs de fonctionnalités et connecteurs de fonctionnalités