DataContext에 액세스 할 수없는 그리드 열 머리글에서 바인딩을 실행하려고합니다. 그것에게 액세스 권한을 부여하기 위해, 나는 DataContextProxy 여기에 설명 사용 : http://weblogs.asp.net/dwahlin/archive/2009/08/20/creating-a-silverlight-datacontext-proxy-to-simplify-data-binding-in-nested-controls.aspxSilverlight : DataContextProxy를 사용하여 ObserableCollection 요소에 액세스하십시오.
이 단순화 내 뷰 모델의 버전입니다 :
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}"/>
하지만 Obtainable 컬렉션의 TabItemViewModels 내에서 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