2014-10-07 106 views
0

我有兩個字段的用戶控件:如何在用戶控件中創建自定義屬性?

public string OffText { set; get; } 
public string OnText { set; get; } 

在我的形式加入這一控制,並填寫OffTextOnText屬性之後。在控件的構造函數中我有:

public FakeToggleSwitch() 
    { 
     InitializeComponent(); 

     if (State) 
     { 
      CheckEdit.Text = OnText; 
     } 
     else 
     { 
      CheckEdit.Text = OffText; 
     } 
    } 

而且在調試模式下我看到OnTextOffTextnull。這裏有什麼可能是錯的?我有什麼必須與領域?

+0

在WPF用戶控件創建[依賴項屬性(http://msdn.microsoft.com/en- us/library/ms752914%28v = vs.110%29.aspx)非標準屬性 – Franck 2014-10-07 11:09:41

+0

自動屬性具有'default'值。 'reference'類型的默認值是'null'。您可以簡單地在構造函數中設置它們的值(構造函數的目的是在默認狀態下構造對象)。 – Sinatr 2014-10-07 11:12:47

+0

我想你必須訪問像下面的usercontrol引用的屬性,讓我們說您的窗體上的用戶控件具有名稱「UC」,那麼你必須使用像這樣的屬性uc.OnText和uc.OffText – 2014-10-07 11:15:23

回答

1

那些不是字段,但是auto-properties

如果您使用自動屬性和它的默認值應爲0(數值型)或null(引用類型)不同,則可以將其設置在構造

public string OffText { set; get; } 
public string OnText { set; get; } 

public Constructor() 
{ 
    // init 
    OffText = "..."; 
    OnText = "..."; 
} 

否則,你可能會決定正常使用性能

private string _offText = "..."; // default value 
public string OffText 
{ 
    get { return _offText; } 
    set { _offText = value; } 
} 

如果使用wpf,則通常UserControl性能有必須依賴屬性(支持綁定)。通過使用code snippets很容易完成創建依賴項屬性。類型

propdp 標籤標籤

得到

public int MyProperty 
{ 
    get { return (int)GetValue(MyPropertyProperty); } 
    set { SetValue(MyPropertyProperty, value); } 
} 

// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc... 
public static readonly DependencyProperty MyPropertyProperty = 
    DependencyProperty.Register("MyProperty", typeof(int), typeof(ownerclass), new PropertyMetadata(0));