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