我试图将文本块绑定到变量slctItem
。我可以看到它包含我需要的必要数据,但是我的窗口没有显示我期望的数据。这是我控制背后的代码。此控件由弹出窗口使用,该窗口将显示控件的值。
在遍历代码时,我发现每次在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 :(得分:2)
您需要将DataContext
设置为自己:
public MetaData()
{
InitializeComponent();
this.DataContext = this;
}
这将允许绑定找到适当的属性。现在,如果在运行时查看输出窗口中的Debug Output
,您应该会看到绑定错误,因为未设置数据上下文。