Silverlight:使用DataContextProxy访问ObserableCollection元素

Silverlight:使用DataContextProxy访问ObserableCollection元素,silverlight,xaml,Silverlight,Xaml,我正在尝试使绑定在一个网格列的头中工作,该列无权访问DataContext。为了给它访问权限,我使用了下面描述的DataContextProxy: 这是我的ViewModel的简化版本: public class ViewModel : INotifyPropertyChanged { private String _myString; private ObservableCollection<TabItemViewModel> _tabItems; public Strin

我正在尝试使绑定在一个网格列的头中工作,该列无权访问DataContext。为了给它访问权限,我使用了下面描述的DataContextProxy:

这是我的ViewModel的简化版本:

public class ViewModel : INotifyPropertyChanged
{
 private String _myString;
 private ObservableCollection<TabItemViewModel> _tabItems;

 public String MyString { blah... }
 public ObservableCollection<TabItemViewModel> TabItems {blah... }
}
我这样试过:

<TextBlock  Text="{Binding Source={StaticResource DataContextProxy}, Path=DataSource.MyString}"/>
<TextBlock  Text="{Binding Source={StaticResource DataContextProxy}, Path=DataSource.TabItems.ErrorHeading}"/>


但是我不认为你可以像这样深入研究ObserviceCollection——我甚至不知道它如何知道要查看集合中的哪个元素

在您的
选项卡ItemViewModel
实现中,您已经定义了
ErrorHeading
两次

在一个地方你写

 RaisePropertyChanged("ErrorHeading");
而另一个你写过的地方

 OnPropertyChanged("ErrorHeading");
看起来您的代码有严重问题。最重要的是,您没有在
选项卡项视图模型中实现接口
INotifyPropertyChanged


因此,首先解决这些问题。也许,这样您就可以在代码中做一些更优雅的事情了。:-)

对不起,伙计,这只是一个复制粘贴错误,这是我第一次使用stackoverflow站点。我已经实现了INotifyPropertyChanged,但为了简洁起见,没有实现它。
 OnPropertyChanged("ErrorHeading");