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