DesignModeValueProvider – třída
Vlastnost změny provedené uživatelem v Návrháři shromažďuje a poskytuje nové hodnoty v době návrhu.
Hierarchie dědičnosti
System.Object
Microsoft.Windows.Design.Features.FeatureProvider
Microsoft.Windows.Design.Model.DesignModeValueProvider
Obor názvů: Microsoft.Windows.Design.Model
Sestavení: Microsoft.Windows.Design.Interaction (v Microsoft.Windows.Design.Interaction.dll)
Syntaxe
'Deklarace
Public Class DesignModeValueProvider _
Inherits FeatureProvider
public class DesignModeValueProvider : FeatureProvider
public ref class DesignModeValueProvider : public FeatureProvider
type DesignModeValueProvider =
class
inherit FeatureProvider
end
public class DesignModeValueProvider extends FeatureProvider
Typ DesignModeValueProvider zveřejňuje následující členy.
Konstruktory
Název | Popis | |
---|---|---|
DesignModeValueProvider | Inicializuje novou instanci DesignModeValueProvider Třída |
Na začátek
Vlastnosti
Název | Popis | |
---|---|---|
Properties | Získá sadu vlastností k zachycení. |
Na začátek
Metody
Název | Popis | |
---|---|---|
Equals | Určuje, zda zadaná Object se rovná aktuální Object. (Zděděno z Object.) | |
Finalize | Umožňuje zkuste uvolnit prostředky a provádět další operace vyčištění před je převzaty systémem pro uvolnění objektu. (Zděděno z Object.) | |
GetHashCode | Slouží jako funkce hash určitého typu. (Zděděno z Object.) | |
GetType | Získává Type aktuální instance. (Zděděno z Object.) | |
InvalidateProperty | Zadaná vlastnost zruší platnost. | |
MemberwiseClone | Vytvoří kopii aktuální Object. (Zděděno z Object.) | |
ToString | Vrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.) | |
TranslatePropertyValue | Vlastnost změny provedené uživatelem v Návrháři zachycuje a využívá vlastní logiku poskytuje nové hodnoty v době návrhu. |
Na začátek
Poznámky
Když uživatel změní hodnotu vlastnosti objektu v návrháři, která hodnota je obvykle nastavena na objekt v návrháři. Pomocí DesignModeValueProvider třídy, můžete vložit vlastní logiky do procesu. Například Ačkoli má uživatel moci nastavení vlastnosti visible ovládacího prvku false, ovládací prvek i nadále být viditelná v čase návrhu.
Z toho vytvořit DesignModeValueProvider a připojit ji k vlastní ovládací prvek. DesignModeValueProvider Otisků změny vlastností, které uživatel provede, vložit vlastní logiky TranslatePropertyValue metodou, a DesignModeValueProvider předává nové hodnoty a designer.
Důležité
Při použití této techniky chování v Návrháři vlastnost neodpovídá hodnotě vlastnosti zobrazení XAML. XAML zobrazí hodnota zadaná v době návrhu. Hodnota zobrazení XAML představuje chování, vykazuje vlastnosti v době běhu.
Platí následující omezení při použití DesignModeValueProvider třídy změnit hodnotu vlastnosti v čase návrhu.
Zprostředkovatel návrhu hodnotu lze nastavit pouze na typy, které vyplývají z DependencyObject Třída
Zprostředkovatel návrhu hodnotu lze nastavit pouze na Vlastnosti závislostí.
Vaše DesignModeValueProvider provádění musí nastavit hodnotu návrhu na base typ vlastnosti. Můžete implementovat poskytovatele cílových odvozený typ hodnoty. Například hodnotu zprostředkovatele pro registraci Height Vlastnosti Button třídy, je třeba název zaregistrovat v FrameworkElement třídy a testování cílového typu v zprostředkovatele provádění hodnotu. Další informace naleznete v tématu Walkthrough: Changing the Behavior of a Property at Design Time.
Hodnota zprostředkovatelé jsou spouštěny v pořadí, ve kterém jsou registrována. Poslední hodnota zprostředkovatele, který je registrován pro vlastnost proveden poslední; však jsou provedeny všechny hodnotu zprostředkovatele.
Pokud poskytovatel hodnotu TranslatePropertyValue Implementace vrátí nullodkaz Null (Nothing v jazyce Visual Basic), návrhu hodnota vlastnosti nastavena na nullodkaz Null (Nothing v jazyce Visual Basic).
Pokud poskytovatel hodnotu TranslatePropertyValue Implementace vrátí hodnotu statické UnsetValue, Návrhář WPF volání ClearValue metodu na vlastnost.
Poznámka
Pokud vytváříte hodnotu zprostředkovatele pro ovládací prvky programu Silverlight, musíte použít verzi WPF UnsetValue. Toto omezení je Návrhář WPF framework.
Hodnota poskytovatelů nepracují s WPF zděděné vlastnosti. Například registrace zprostředkovatele hodnotu pro FlowDirection nefunguje očekávaným způsobem v návrhovém režimu.
Pokud je hodnota vlastnosti nastavena vazbou, musí vracet hodnotu zprostředkovatele Binding namísto vypočítaná hodnota.
Někteří poskytovatelé hodnota může dodržet, protože Návrhář může být nutné vynutit vlastnosti zejména návrh zajištění zvláštní hodnotu návrhu. Například hodnota vlastního zprostředkovatele pro vlastnosti písma nefunguje podle očekávání Návrhář WPF.
Při registraci zprostředkovatele hodnotu pomocí TypeIdentifier, identifikátor typu, který je předán do TranslatePropertyValue Implementace nemusí být stejná jako je uvedeno v návrhu metadat. Je ekvivalentní, ale nemusí být stejné instance. Hodnota poskytovatel provádí kontrolu typu, je třeba vyřešit součásti typu identifikátor vlastnosti a provést zkouška typu rovnocennost rozpoznat typ. Obvykle stačí zkontrolovat název vlastnosti, ale pokud logika musí provádět na typu, je nutné vyřešit identifikátor typu. Použití ResolveType způsob získání správného typu.
Návrhář WPF Framework může předat identifikátor typu v některém z několika podporovaných formátů. Hodnota poskytovatel provádí typ porovnání, je nutné odstranit identifikátor typu skutečné typu. Použití ResolveType způsob získání správného typu.
Příklady
Následující příklad vytvoří vlastní DesignModeValueProvider která je připojena k řízení vlastní tlačítko. V TranslatePropertyValue Metoda, změňte Content Vlastnosti Button tak, aby se velká v návrháři. Můžete také změnit Background Vlastnost Button tak, aby se s výchozí barvu systému v návrháři. Tyto změny ovlivní pouze Návrhář. V době běhu Content a Background se objeví vlastnosti s hodnotami nastavenými uživatele.
Další informace naleznete v tématu Walkthrough: Changing the Behavior of a Property at Design Time.
Imports System
Imports System.Windows 'SystemColors
Imports System.Windows.Media 'SolidColorBrush
Imports System.Windows.Controls 'Button
Imports Microsoft.Windows.Design.Model 'DesignModeValueProvider
Imports Microsoft.Windows.Design.Metadata
Namespace CustomButton
Public Class CustomButtonDesignModeValueProvider
Inherits DesignModeValueProvider
Public Sub New()
Properties.Add(GetType(Button), "Content")
Properties.Add(GetType(Button), "Background")
End Sub
Public Overrides Function TranslatePropertyValue( _
ByVal item As ModelItem, _
ByVal identifier As PropertyIdentifier, _
ByVal value As Object) As Object
If identifier.DeclaringType Is GetType(Button) And _
identifier.Name = "Content" Then
Return value.ToString().ToUpper()
End If
If identifier.DeclaringType Is GetType(Button) And _
identifier.Name = "Background" Then
Return New SolidColorBrush(SystemColors.ControlColor)
End If
Return MyBase.TranslatePropertyValue(item, 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;
using Microsoft.Windows.Design.Metadata; //DesignModeValueProvider
namespace CustomButton
{
class CustomButtonDesignModeValueProvider : DesignModeValueProvider
{
public CustomButtonDesignModeValueProvider()
{
Properties.Add( typeof(Button), "Content");
Properties.Add(typeof(Button), "Background");
}
public override object TranslatePropertyValue(ModelItem item, PropertyIdentifier identifier, object value)
{
if (identifier.DeclaringType == typeof( Button ) &&
identifier.Name == "Content" )
{
return ((string)value).ToUpper();
}
if (identifier.DeclaringType == typeof(Button) &&
identifier.Name == "Background")
{
return new SolidColorBrush(SystemColors.ControlColor);
}
return base.TranslatePropertyValue(item, identifier, value);
}
}
}
Zabezpečení podprocesu
Všechny veřejné členy static (Shared v jazyce Visual Basic) tohoto typu jsou zabezpečeny pro používání podprocesů. Zabezpečení sdílených členů pro používání podprocesů není zaručeno.
Viz také
Odkaz
Microsoft.Windows.Design.Model – obor názvů
Další zdroje
How to: Change the Behavior of a Property at Design Time