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