Dot-Net
依賴屬性錯誤
我正在學習依賴屬性。我讀了很多文章和書籍,但我仍然不清楚。
下面顯示的程序是我寫來學習的。裡面有一些錯誤,請幫忙解決。我有問題。
- 自定義 Dependency 屬性元素的主要用途是用於通知更改?
- 我在 WPF 教科書中找到了Button的“IsDefaultProperty”程式碼。這意味著“ IsDefault ”屬性是依賴屬性嗎?
- 為什麼他們顯示該程式碼?這意味著,在內部,在 Button 類中,它是這樣定義的?(他們展示了內部程式碼?)或者他們展示瞭如何定義為自定義?
這是我的程式碼:
namespace DependencyProperties { public class Contact { private int id=100; private string name="shri"; public static readonly DependencyProperty IsPresentProperty; public int ID { get { return id; } } public string NAME { get { return name; } } static Contact() { IsPresentProperty = DependencyProperty.Register("IsPresent", typeof(bool),typeof(Contact),new FrameworkPropertyMetadata(false,new PropertyChangedCallback(OnIsPresentChanged))); } public bool Present { get { return (bool)GetValue(Contact.IsPresentProperty); } set { SetValue(Contact.IsPresentProperty, value); } } private static void OnIsPresentChanged(DependencyObject o, DependencyPropertyChangedEventArgs e) { } } }我看到了錯誤:
> Error: GetValue and SetValue does not exist in the current context
自定義 Dependency 屬性元素的主要用途是用於通知更改?
不,這也可以通過實現類來安排
INotifyPropertyChanged。提供更改通知的依賴屬性,但真正的理由是不同的。請參閱為什麼依賴屬性?以及WPF 屬性系統如何經濟?我在 WPF 教科書中找到了 Button 的“IsDefaultProperty”程式碼。這意味著“IsDefault”屬性是依賴屬性嗎?
是的。命名欄位“FooBarProperty”是定義依賴屬性的 WPF 約定;您可以檢查文件
IsDefaultProperty以查看它確實是一個依賴屬性,甚至IsDefault文件也有一個名為“依賴屬性資訊”的部分。為什麼他們顯示該程式碼?這意味著,在內部,在 Button 類中,它是這樣定義的?(他們展示了內部程式碼?)或者他們展示瞭如何定義為自定義?
我不確定“那個”程式碼是什麼,但是是的,該屬性幾乎肯定是這樣定義的
Button(“幾乎”,因為我不確定您指的是什麼)。錯誤:目前上下文中不存在 GetValue 和 SetValue
那是因為你不是從
DependencyObject.
DependencyProperty實例必須在 的實例上定義DependencyObject。因此,您的類必須派生自DependencyObject或其子類之一。WPF 中的許多類型都由此派生,包括Button.因此,要讓您的程式碼在這種情況下工作,您必須使用:
public class Contact : DependencyObject { // ...這就是您收到錯誤的原因
GetValue-SetValue它們是在DependencyObject.