我試圖將文本塊綁定到我的變量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" />
它看起來像你從來沒有設置'DataContext'屬性。那個代碼是否丟失或者你忘了寫它?沒有它,事件處理程序不會設置。 – BradleyDotNET