DataContextにアクセスできないグリッド列のヘッダーでバインディングを取得しようとしています。 http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspxSilverlight:DataContextProxyを使用してObserableCollection要素にアクセスする
をこれは私のViewModelの簡易版である:
public class ViewModel : INotifyPropertyChanged
{
private String _myString;
private ObservableCollection<TabItemViewModel> _tabItems;
public String MyString { blah... }
public ObservableCollection<TabItemViewModel> TabItems {blah... }
}
、それはこのようにXAMLを使用してMyStringにアクセスするために動作します:
<TextBlock Text="{Binding Source={StaticResource DataContextProxy}, Path=DataSource.MyString}"/>
それにアクセス権を与えるために、私はDataContextProxyは、ここで説明する使用しました
しかし、私は、TabItemViewModelsのobservableコレクション内のErrorHeadingを指すようにする方法を知りません...
public class TabItemViewModel : INotifyPropertyChanged
{
private string _errorHeading;
public string ErrorHeading
{
get { return _errorHeading; }
set
{
_errorHeading = value;
RaisePropertyChanged("ErrorHeading");
}
}
}
私はこのようにそれを試してみました:
<TextBlock Text="{Binding Source={StaticResource DataContextProxy}, Path=DataSource.TabItems.ErrorHeading}"/>
が、私はあなたがこのようのObservableCollectionに掘ることができると思ういけない - 私はそれを見にコレクション内のどの要素を知っているかさえわかりません。
これはちょうどコピーの貼り付けエラーでした、これは私の初めてのstackoverflowサイトを使用しています。私はINotifyPropertyChangedを実装しましたが、簡潔にするために残しました。 – scoorey