ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

カスタムコントロールにDependencyProperty追加

カスタムコントロールにDependencyPropertyを追加する

DependencyPropertyはSharedで宣言されるプロパティで、コントロール自身が初期化されて居ない状態で共通で使われるプロパティである。

Public Shared ReadOnly {プロパティ名}Property As DependencyProperty

DependencyProperrtyを宣言する。基本プロパティ名が付く、初期値と変更時のイベント処理を指定する

public static readonly DependencyProperty {プロパティ名}Property = 
  DependencyProperty.Register("{プロパティ名}", 
                              typeof({プロパティ名の型}), 
                              typeof({カスタムコントロールクラス名}),
                              new FrameworkPropertyMetadata({初期値}, new PropertyChangedCallback({プロパティ名}PropertyChanged))
                              )

ex)
public static readonly DependencyProperty IsSelectedProperty = 
  DependencyProperty.Register("IsSelected", 
                              typeof(bool), 
                              typeof(myControl),
                              new FrameworkPropertyMetadata(false, new PropertyChangedCallback(IsSelectedPropertyChanged))
                              )

Private Shared Sub {プロパティ名}PropertyChanged()

DepedencyPropertyのCallBackに指定する。イベント処理

private static IsSelectedPropertyChanged(ByVal sender As DependencyObject, ByVal args As DependencyPropertyChangedEventArgs)
{
    myControl o = (myControl)sender
    
    o.IsSelected = args.NewValue
    
}

Public Property {プロパティ名} As Boolean

プロパティの値を保存するプロパティ宣言

public bool IsSelected
{
    set {SetValue(IsSelectedProperty, value); }
    get { return GetValue(IsSelectedProperty); }
}