2012-11-15 82 views
1

我有,有一個依賴屬性Silverlight的CustomControl依賴屬性不能綁定到父視圖模型

public static readonly DependencyProperty SelectedUserCodeProperty = DependencyProperty.Register(
    "SelectedUserCode",        
    typeof(decimal),       
    typeof(SystemUsersControl),    
    new PropertyMetadata(SelectedUserCodeChanged)); 
public decimal SelectedUserCode 
    { 
     get 
     { 
      return (decimal)this.GetValue(SelectedUserCodeProperty); 
     } 
     set 
     { 
      this.SetValue(SelectedUserCodeProperty, value); 
      RaisePropertyChanged("SelectedUserCode"); 
     } 
    } 

這種控制是我試圖獲得依賴屬性的另一個用戶控件中的自定義控制上面的視圖模型 此XAML是父控件

<SystemUsers:SystemUsersControl Name="ctrlSystemUsersControl" SelectedUserCode="{Binding SelectedSystemUserCode, Mode=TwoWay}" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,2,0,0"/> 

內,但沒有被綁定到父控件視圖模型

我不知道是什麼問題呢,這是我第一次處理依賴屬性,我考慮在一個使兩個控件:(除非我得到任何幫助:)

+0

您不需要「RaisePropertyChanged(」SelectedUserCode「);」在二傳手中。 – trydis

+0

你確定'SelectedSystemUserCode'綁定正確。查看輸出窗口中的綁定錯誤。另外,你可以向你的'UserControl'顯示你設置'DataContext'的代碼嗎? –

回答

0

別擔心,

SelectedSystemUserCode必須是屬性。如果它的屬性你會看到初始值,但是完全支持你的類綁定的是INotifyPropertyChanged的實現。這個基本的界面將成爲我們的使者。

1)當你實現INotifyPropertyChanged時,下面的事件將被添加到你的類。

public event PropertyChangedEventHandler PropertyChanged; 

2)然後創建一個燒製法

public void FirePropertyChanged(string prop) 
{ 
    if(PropertyChanged!=null) 
    { 
     PropertyChanged(prop); 
     } 
    } 

3)註冊此事件沒有得到空引用。

in constructor this.PropertyChanged(s,a)=>{ //may do nothing }; 

4)//你可以用Lazy < T>代替這個。

public decimal SelectedSystemUserCode 
{ 
    get{ 
      if(_selectedSystemUserCode==null) 
       { 
         _selectedSystemUserCode=default(decimal); 
       } 
     return _selectedSystemUserCode; 
     } 
    set 
     { 
    _selectedSystemUserCode=value; 
     FirePropertyChanged("SelectedSystemUserCode"); 
     //This will be messanger for our binding 
     } 
    } 

此外, 我記得是默認值,所以你可能會爲一個十進制值,SelectedUserCodeChanged是回調方法它也可以。

//new PropertyMetadata(SelectedUserCodeChanged) 
new PropertyMetadata(0) or null 

希望有所幫助。

相關問題