DesignModeValueProvider 类
更新:2007 年 11 月
捕获用户在设计器中进行的属性更改,并在设计时提供新值。
命名空间: 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,但该控件仍应在设计时可见。
若要完成此操作,需要创建 DesignModeValueProvider 并将它附加到自定义控件。DesignModeValueProvider 捕获用户所做的属性更改,您将自己的逻辑插入 TranslatePropertyValue 方法中,DesignModeValueProvider 将新值传递到设计器。
重要说明: |
---|
使用此技术时,设计器中的属性行为与 XAML 视图中的属性值不匹配。XAML 视图显示用户在设计时输入的值。XAML 视图中的值表示该属性将在运行时展现的行为。 |
示例
下面的示例创建一个将附加到自定义按钮控件的自定义 DesignModeValueProvider。在 TranslatePropertyValue 方法中,更改 Button 的 Content 属性,以使它在设计器中显示为大写。您还可以更改 Button 的 Background 属性,以使它在设计器中显示为默认系统颜色。这些更改只影响设计器。在运行时,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(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
另请参见
参考
Microsoft.Windows.Design.Model 命名空间