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 передает в конструктор новые значения.
Важное примечание. |
---|
При использовании этого способа поведение свойства в конструкторе не соответствует значению свойства в представлении 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