Partilhar via


Classe DesignModeValueProvider

Captura Propriedade as alterações feitas pelo usuário no designer e fornece novos valores em tempo de design.

Namespace:  Microsoft.Windows.Design.Model
Assembly:  Microsoft.Windows.Design.Extensibility (em Microsoft.Windows.Design.Extensibility.dll)

Sintaxe

Public Class DesignModeValueProvider _
    Inherits FeatureProvider

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

Comentários

Normalmente, quando um usuário altera um valor da propriedade de um objeto no designer, esse valor é conjunto no objeto no designer.Usando o DesignModeValueProvider classe, você pode inserir sua própria lógica para este processo. Por exemplo, você quiser que o usuário poderá definir a propriedade visível de um controle false,mas o controle ainda deve estar visível no tempo de design.

Para fazer isso, você cria um DesignModeValueProvider e anexá-la ao seu controle personalizado.O DesignModeValueProvider captura Propriedade alterações que o usuário faz, inserir sua própria lógica no método TranslatePropertyValue, e o DesignModeValueProvider passa os novos valores para o designer.

Observação importante:

Quando você usa essa técnica, o comportamento de uma propriedade no designer não coincide com o valor da propriedade no modo XAML.XAML exibe o valor que o usuário inseriu em tempo de design.O valor no modo XAML representa o comportamento que a propriedade irá apresentar em tempo de execução.

Exemplos

O exemplo a seguir cria um personalizado DesignModeValueProvider que será anexado a um controle de botão personalizado. No método TranslatePropertyValue, você alterar a propriedade Content de Button para que ele seja exibido maiúsculo no designer.Você também alterar a Background propriedade de Button para que ele seja exibido com a cor padrão do sistema no designer.Essas alterações afetam somente o criador.No tempo de execução, o Content e as Background propriedades aparecem com os valores definidos pelo usuário.

Para obter mais informações, consulte Demonstra Passo a passo: Alterar o comportamento de uma propriedade em tempo de 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);
        }
    }
}

Hierarquia de herança

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

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Membros DesignModeValueProvider

Namespace Microsoft.Windows.Design.Model

Outros recursos

Como: Alterar o comportamento de uma propriedade em tempo de design

Arquitetura de extensibilidade Designer WPF

Propriedade de edição de arquitetura

Recurso provedores e conectores de recursos