Поделиться через


DesignModeValueProvider - класс

Обновлен: Ноябрь 2007

Фиксация изменений свойств, внесенных пользователем в конструкторе, и предоставление новых значений во время разработки.

Пространство имен:  Microsoft.Windows.Design.Model
Сборка:  Microsoft.Windows.Design.Extensibility (в Microsoft.Windows.Design.Extensibility.dll)

Синтаксис

'Декларация
Public Class DesignModeValueProvider _
    Inherits FeatureProvider
'Применение
Dim instance As DesignModeValueProvider
public class DesignModeValueProvider : FeatureProvider
public ref class DesignModeValueProvider : public FeatureProvider
public class DesignModeValueProvider extends FeatureProvider

Заметки

Обычно, когда пользователь изменяет значение свойства объекта в конструкторе, это значение устанавливается в конструкторе для данного объекта. С помощью класса DesignModeValueProvider можно вставить в процесс собственную логику. Например, требуется, чтобы пользователь имел возможность установить значение false для свойства Visible, но элемент управления по-прежнему должен быть видимым во время разработки.

Для этого создайте объект DesignModeValueProvider и присоедините его к пользовательскому элементу управления. DesignModeValueProvider фиксирует изменения свойства, которые совершает пользователь; вставляется собственная логика в метод TranslatePropertyValue; DesignModeValueProvider передает в конструктор новые значения.

Bb628934.alert_caution(ru-ru,VS.90).gifВажное примечание.

При использовании этого способа поведение свойства в конструкторе не соответствует значению свойства в представлении XAML. Представление XAML отображает значение, введенное пользователем во время разработки. Значение в представлении XAML представляет поведение, которое свойство будет проявлять во время выполнения.

Примеры

В следующем примере создается настраиваемый объект DesignModeValueProvider, который присоединяется к пользовательскому элементу управления «Кнопка». В методе TranslatePropertyValue свойство Content объекта Button изменяется таким образом, чтобы в конструкторе отображался верхний регистр. Также изменяется свойство Background объекта Button таким образом, чтобы в конструкторе он отображался со стандартным системным цветом. Эти изменения затрагивают только конструктор. Во время выполнения свойства Content и Background отображаются со значениями, заданными пользователем.

Дополнительные сведения см. в разделе Пошаговое руководство. Изменение поведения свойства во время разработки.


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

Иерархия наследования

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

Потокобезопасность

Любые открытые члены этого типа, объявленные как static (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

DesignModeValueProvider - члены

Microsoft.Windows.Design.Model - пространство имен

Другие ресурсы

Практическое руководство. Изменение поведения свойства во время разработки

Архитектура расширяемости конструктора WPF

Архитектура редактирования свойства

Поставщики функций и соединительные элементы