我已經創建了幾個擁有一些通用屬性的UserControl。是否有可能創建一個基本的用戶控件,具體的可以派生?創建一個Base-UserControl
基類:
public class LabeledControlBase : UserControl {
public string ControlWidth {
get { return (string)GetValue(ControlWidthProperty); }
set { SetValue(ControlWidthProperty, value); }
}
// Using a DependencyProperty as the backing store for ControlWidth. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ControlWidthProperty =
DependencyProperty.Register("ControlWidth", typeof(string), typeof(LabeledControlBase), new PropertyMetadata("Auto"));
}
具體類:
public partial class LabeledTextBox : Base.LabeledControlBase {
public string LabelText {
get { return (string)GetValue(LabelTextProperty); }
set { SetValue(LabelTextProperty, value); }
}
// Using a DependencyProperty as the backing store for LabelText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty LabelTextProperty =
DependencyProperty.Register("LabelText", typeof(string), typeof(LabeledTextBox), new PropertyMetadata(null));
public string TextBoxText {
get { return (string)GetValue(TextBoxTextProperty); }
set { SetValue(TextBoxTextProperty, value); }
}
// Using a DependencyProperty as the backing store for TextBoxText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty TextBoxTextProperty =
DependencyProperty.Register("TextBoxText", typeof(string), typeof(LabeledTextBox), new PropertyMetadata(null));
我想才達到什麼: 我希望能夠設置「ControlWidth」屬性上從派生的任何用戶控件「 LabeledControlBase」。
問題: 我發現它的方式LabeledTextBox不能識別GetValue和SetValue方法,儘管它繼承自派生自UserControl的LabeledControlBase。當將Base.LabeledControlBase更改爲UserControl時,一切正常(除非我無法訪問我常用的屬性)。
它給編譯時錯誤?或者只是在編輯器中告訴你該方法無法識別? – mike
以及錯誤列表中的編譯時錯誤。錯誤列表說: 錯誤\t CS0103 \t名稱'GetValue'在當前上下文中不存在\t ... – C4p741nZ
呵呵..好笑,我試圖複製你的問題,不能。在Base.LabeledControlBase中,「Base」。 LabeledControlBase的命名空間是否正確? – mike