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