VS2012의 표준 Silverlight 탐색 응용 프로그램에서 웹 사이트를 구축하고 있습니다. 내 Mainpage-view 및 Home-view에 동일한 datacontext를 사용하고 싶습니다. 나는 Mainpage-view의 내비게이션에있는 textblock과 home-view의 내용에 표시하고 싶은 Name이라는 속성 하나가있는 Employee 클래스를 만들었습니다. 집에서 볼 때 나는 또한 이름의 내용을 바꿀 수있는 텍스트 블록을 가질 것이다.두 개의보기에 대해 datacontext를 공유하십시오.
아무리 datacontext를 설정하려고해도 두보기 각각에 대해 항상 employee 인스턴스가 생성됩니다. 같은 인스턴스를 사용하려면 어떻게해야합니까?
Employee.cs
public class Employee : INotifyPropertyChanged
{
string _name = "Test";
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
OnPropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
에서 MainPage.xaml
<TextBlock x:Name="ApplicationNameTextBlock" Style="{StaticResource ApplicationNameStyle}"
Text="{Binding Name}"/>
Home.xaml는
<TextBox Text="{Binding Name, Mode=TwoWay}"/>
<TextBlock Text="{Binding Name}"/>
당신은 VM을 생성 및 뷰의 DataContext에 할당하는 방법에 대해 아무것도 말하지 않았다? – codeSetter
어떻게 datacontext를 설정 했습니까? – Jimmy
두 .xaml 파일과 코드 숨김 파일 모두에서 datacontext를 설정해 보았습니다. 그러나 내가 이해하는 한은 컨트롤의 .xaml에 datacontext를 설정하는 것입니다. 코드 배후 파일에서 this.Datacontext = new Employee()를 썼습니다. 내 문제는 어떻게 직원의 동일한 인스턴스를 공유하는 MainPage 및 홈보기를 얻는 것입니다 – Steean