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 クラスを使用すると、このプロセスに独自のロジックを挿入できます。たとえば、ユーザーがコントロールの Visible プロパティを 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 名前空間