2010-05-12 102 views
2

我有一個具有Integer類型屬性的用戶控件,我試圖在XAML模板中將其設置爲bindingsource中屬性的屬性。 如果我使用硬編碼的整數,即在XAML中爲用戶控件設置屬性

<MyControl MyIntegerProperty="3" /> 

這工作得很好,但如果我嘗試

<MyControl MyIntegerProperty="{Binding MyDataContextIntegerProperty}" /> 

失敗設置屬性。

我知道,在MyDataContext整數屬性返回一個有效的整數,我知道,這種格式的作品,直接上面這個模板,我也行

<TextBlock Text="{Binding MyDataContextStringProperty}" /> 

其正常工作。

是否有任何標記需要在我的用戶控件整數屬性上設置以允許此工作?還是我在做別的事情?

感謝

+1

是你的財產DependencyProperty? – Yurec 2010-05-12 08:59:51

+0

嗨@Yurec,不,它不是,我從下面的迴應猜測,它需要。乾杯 – Ben 2010-05-12 10:17:51

回答

2

MyIntegerProperty需要一個Dependency Property是綁定...

下面是一個例子:

public static readonly DependencyProperty MyIntegerProperty = 
    DependencyProperty.Register("MyInteger", typeof(Integer), typeof(MyControl)); 

public int MyInteger 
{ 
    get { return (int)GetValue(MyIntegerProperty); } 
    set { SetValue(MyIntegerProperty, value); } 
} 

MyControl的XAML定義將隨即成爲:

<MyControl MyInteger="{Binding MyDataContextIntegerProperty}" /> 
0

您需要將MyIntegerProperty定義爲依賴項屬性。你可以這樣定義:

public class MyControl : UserControl 
{ 
    public static readonly DependencyProperty MyIntegerProperty = 
      DependencyProperty.Register("MyInteger", typeof(Integer),typeof(MyControl), <MetaData>); 

    public int MyInteger 
    { 
     get { return (int)GetValue(MyIntegerProperty); } 
     set { SetValue(MyIntegerProperty, value); } 
    } 
}