2016-01-22 152 views
-1

如何創建簡單布爾依賴項屬性IsInput。當在代碼中創建類時,此值只能設置爲truefalse。看起來很簡單,但是在網上搜索並沒有找到明確的例子。WPF布爾依賴項屬性C#

我在網上看到過這樣一個例子,但我不清楚我會重複什麼來正確創建我自己的布爾依賴屬性。

public static readonly DependencyProperty AncestorProperty = 
    DependencyProperty.Register("Ancestor", typeof(FrameworkElement), typeof(MyItem), 
     new FrameworkPropertyMetadata(Ancestor_PropertyChanged)); 

/// <summary> 
/// Event raised when 'Ancestor' property has changed. 
/// </summary> 
private static void Ancestor_PropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    MyItem c = (MyItem)d; 
    c.UpdateHotspot(); 
} 
+1

只要閱讀文檔https://msdn.microsoft.com/en-us/library/ms752914(v=vs.100).aspx – chameleon86

回答

2

Register方法的第二個參數是屬性,即bool的類型,而第三個參數是所謂的所有者類型,這是聲明性(MyControl在類型下面的例子)。

對於完整的依賴項屬性聲明,您還需要使用getter和setter來聲明「wrapper」屬性,該setter調用依賴項屬性的GetValueSetValue方法。

public static readonly DependencyProperty IsInputProperty = 
    DependencyProperty.Register("IsInput", typeof(bool), typeof(MyControl), 
     new FrameworkPropertyMetadata(IsInputPropertyChanged)); 

/// <summary> 
/// CLR wrapper for the 'IsInput' dependency property. 
/// </summary> 
public bool IsInput 
{ 
    get { return (bool)GetValue(IsInputProperty); } 
    set { SetValue(IsInputProperty, value); } 
} 

/// <summary> 
/// Callback called when 'IsInput' property has changed. 
/// </summary> 
private static void IsInputPropertyChanged(
    DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    bool b = (bool)e.NewValue; 
    //TODO 
} 
+0

@Clemens:固定,THX –

+0

不知道什麼應該是錯的。你能解釋一下嗎? –

+0

閱讀[文檔](https://msdn.microsoft.com/en-us/library/ms597500(v = vs.100).aspx):「* ownerType *:註冊依賴項屬性的所有者類型。 「 – Clemens