2014-07-10 50 views
1

我試圖將文本塊綁定到我的變量slctItem。我可以看到它包含我需要的必要數據,但是我的窗口沒有顯示我期待的數據。這裏是我的控制背後的代碼。該控件由彈出窗口使用,該窗口將顯示控件的值。PropertyChanged成員INotifyPropertyChanged始終爲空

行走代碼時,我看到該處理程序每​​次都在OnPropertyChanged()方法中返回null。爲什麼?我一定在這裏做錯了事。 slcItem也包含我想要使用的數據。 OnPropertyChanged()方法也觸發它只包含處理程序的空值。

public partial class MetaData : UserControl, INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 
    private string _slctItem; 

    public MetaData() 
    { 
     InitializeComponent(); 
    } 

    public string slctItem 
    { 
     get 
     { 
      return _slctItem; 
     } 
     set 
     { 
      _slctItem = value; 
      OnPropertyChanged("slctItem"); 
     } 
    } 

    private void OnPropertyChanged(string propertyName) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) 
     { 
      handler(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    internal void Refresh() 
    { 
     try 
     { 
      // If DataContext is Null or a detached DataRow, disable the view 
      if (DataContext != null && (DataContext is DataRow && ((DataRow)DataContext).RowState != System.Data.DataRowState.Detached)) 
      { 

       if (DataContext is "Something Here") 
       { 
        slctItem = (("Something Here")this.DataContext).NAME; 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      throw new Exception("MetaData -> Refresh(): " + e.Message); 
     } 
    } 

這是我的控件的XAML代碼。在這裏,我試圖綁定到slctItem

<TextBox Grid.Column="2" Grid.Row="0" Text="{Binding Path=slctItem, Mode=OneWay, Converter={StaticResource myFirstCharToUpperConverter}}" Width="150" Height="25" HorizontalAlignment="Left" /> 
+0

它看起來像你從來沒有設置'DataContext'屬性。那個代碼是否丟失或者你忘了寫它?沒有它,事件處理程序不會設置。 – BradleyDotNET

回答

1

您需要的DataContext設置自己:

public MetaData() 
{ 
    InitializeComponent(); 
    this.DataContext = this; 
} 

這將允許結合查找相應的財產。現在,如果您在運行時查看輸出窗口中的Debug Output,則應該看到綁定錯誤,因爲數據上下文未設置。

+0

所以我不能這樣做,因爲我像這樣在XAML方面設置了DataContext。如果我實施您的解決方案,則不再顯示CREATED_BY。 '' 但是你的DataContext是有道理的。我只是不確定在SlimItem的XAML端設置什麼? – GET1NE

+0

@ GET1NE您可以使用RelativeSource綁定綁定到self。 –

+0

所以這工作。謝謝您的幫助! '' – GET1NE