Sdílet prostřednictvím


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
Veřejná metoda DesignModeValueProvider Inicializuje novou instanci DesignModeValueProvider Třída

Na začátek

Vlastnosti

  Název Popis
Veřejná vlastnost Properties Získá sadu vlastností k zachycení.

Na začátek

Metody

  Název Popis
Veřejná metoda Equals Určuje, zda zadaná Object se rovná aktuální Object. (Zděděno z Object.)
Chráněná metoda 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.)
Veřejná metoda GetHashCode Slouží jako funkce hash určitého typu. (Zděděno z Object.)
Veřejná metoda GetType Získává Type aktuální instance. (Zděděno z Object.)
Chráněná metoda InvalidateProperty Zadaná vlastnost zruší platnost.
Chráněná metoda MemberwiseClone Vytvoří kopii aktuální Object. (Zděděno z Object.)
Veřejná metoda ToString Vrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.)
Veřejná metoda 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

WPF Designer Extensibility Architecture

Property Editing Architecture

Feature Providers and Feature Connectors