Compartir a través de


DesignModeValueProvider (Clase)

Actualización: noviembre 2007

Captura los cambios de propiedad realizados por el usuario en el diseñador y proporciona nuevos valores en tiempo de diseño.

Espacio de nombres:  Microsoft.Windows.Design.Model
Ensamblado:  Microsoft.Windows.Design.Extensibility (en Microsoft.Windows.Design.Extensibility.dll)

Sintaxis

Public Class DesignModeValueProvider _
    Inherits FeatureProvider

Dim instance As DesignModeValueProvider
public class DesignModeValueProvider : FeatureProvider
public ref class DesignModeValueProvider : public FeatureProvider
public class DesignModeValueProvider extends FeatureProvider

Comentarios

Normalmente, cuando un usuario cambia un valor de propiedad de un objeto en el diseñador, ese valor se establece en el objeto en el diseñador. La clase DesignModeValueProvider le permite insertar su propia lógica en este proceso. Por ejemplo, supongamos que desea que el usuario pueda establecer la propiedad visible de un control en false, pero que el control siga estando visible en tiempo de diseño.

Para ello, debe crear un DesignModeValueProvider y asociarlo al control personalizado. DesignModeValueProvider captura los cambios de propiedad realizados por el usuario, se inserta una lógica propia en el método TranslatePropertyValue y DesignModeValueProvider pasa los nuevos valores al diseñador.

Nota importante:

Cuando se utiliza esta técnica, el comportamiento de una propiedad en el diseñador no coincide con el valor de la propiedad en la vista XAML. La vista XAML muestra el valor que el usuario especificó en tiempo de diseño. El valor en la vista XAML representa el comportamiento que va a mostrar la propiedad en tiempo de ejecución.

Ejemplos

En el ejemplo siguiente crea un DesignModeValueProvider personalizado que se asociará a un control de botón personalizado. En el método TranslatePropertyValue, cambie la propiedad Content de Button para que se muestre en mayúsculas en el diseñador. Puede cambiar también la propiedad Background de Button para que aparezca con el color predeterminado del sistema en el diseñador. Estos cambios sólo afectan al diseñador. En tiempo de ejecución, las propiedades Content y Background aparecen con los valores establecidos por el usuario.

Para obtener más información, vea Tutorial: Cambiar el comportamiento de una propiedad en tiempo de diseño.


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);
        }
    }
}

Jerarquía de herencia

System.Object
  Microsoft.Windows.Design.Features.FeatureProvider
    Microsoft.Windows.Design.Model.DesignModeValueProvider

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

DesignModeValueProvider (Miembros)

Microsoft.Windows.Design.Model (Espacio de nombres)

Otros recursos

Cómo: Cambiar el comportamiento de una propiedad en tiempo de diseño

Arquitectura de extensibilidad de WPF Designer

Arquitectura de edición de propiedades

Proveedores de características y conectores de características