Condividi tramite


Classe DesignModeValueProvider

Aggiornamento: novembre 2007

Acquisisce modifiche di proprietà apportate dall'utente nella finestra di progettazione e fornisce nuovi valori in fase di progettazione.

Spazio dei nomi:  Microsoft.Windows.Design.Model
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Sintassi

Public Class DesignModeValueProvider _
    Inherits FeatureProvider

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

Note

In genere, quando un utente modifica il valore di una proprietà di un oggetto nella finestra di progettazione, tale valore viene impostato nell'oggetto della finestra di progettazione. Utilizzando la classe DesignModeValueProvider, è possibile inserire una logica personalizzata in questo processo. Ad esempio, si desidera che l'utente sia in grado di impostare la proprietà visibile di un controllo su false, ma che tuttavia il controllo rimanga visibile in fase di progettazione.

A tal fine, viene creato un oggetto DesignModeValueProvider che viene associato al controllo personalizzato. L'oggetto DesignModeValueProvider acquisisce le modifiche della proprietà apportate dall'utente, la logica personalizzata viene inserita nel metodo TranslatePropertyValue e l'oggetto DesignModeValueProvider passa i nuovi valori alla finestra di progettazione.

Nota importante:

Quando si utilizza questa tecnica, il comportamento di una proprietà nella finestra di progettazione non corrisponde al valore della proprietà nella visualizzazione XAML. In quest'ultima, infatti, viene visualizzato il valore immesso dall'utente in fase di progettazione. Il valore nella visualizzazione XAML rappresenta il comportamento che la proprietà esibisce in fase di esecuzione.

Esempi

Nell'esempio seguente viene creato un oggetto DesignModeValueProvider personalizzato che viene associato a un controllo pulsante personalizzato. Nel metodo TranslatePropertyValue, la proprietà Content dell'oggetto Button viene modificata in modo che venga visualizzata in maiuscolo nella finestra di progettazione. Viene inoltre modificata la proprietà Background dell'oggetto Button in modo che venga visualizzata con il colore di sistema predefinito nella finestra di progettazione. Queste modifiche vengono applicate solo nella finestra di progettazione. In fase di esecuzione, le proprietà Content e Background vengono visualizzate con i valori impostati dall'utente.

Per ulteriori informazioni, vedere Procedura dettagliata: modifica del comportamento di una proprietà in fase di progettazione.


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

Gerarchia di ereditarietà

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Membri DesignModeValueProvider

Spazio dei nomi Microsoft.Windows.Design.Model

Altre risorse

Procedura: modificare il comportamento di una proprietà in fase di progettazione

Architettura di estensibilità di Progettazione WPF

Architettura di modifica delle proprietà

Provider di funzionalità e connettori di funzionalità