INotifyPropertyChanged
을 구현 한 클래스가 있습니다. 이 클래스 UserInfo
에는 isLoggedIn이라는 부울 변수가 있습니다. 이제는 내 mainform에서 isEnabled 버튼을 UserInfo.isuserLoggedIn
에 바인드하고 싶습니다.바인딩 버튼 IsEnabled 속성에
어떻게 수행하나요? 메인에서
public class UserInfo : INotifyPropertyChanged
{
private static readonly UserInfo _instance = new UserInfo();
private string username;
private bool isLoggedIn;
public string UserName
{
get { return username; }
set
{
username = value;
NotifyPropertyChanged("UserName");
}
}
public bool UserLoggedIn
{
get { return isLoggedIn; }
set
{
isLoggedIn = value;
NotifyPropertyChanged("UserLoggedIn");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public static UserInfo GetUserInfo()
{
return _instance;
}
}
나는이 :
public class MainWindow
{
UserInfo currentUser = UserInfo.GetUserInfo();
}
XAML은 다음과 같습니다
<Button IsEnabled="{Binding ElementName=currentUser, Path=UserLoggedIn}"/>
하지만 MainWindow UserInfo에서 UserInfo 클래스의 인스턴스를 이미 선언했습니다. currentUser = UserInfo.GetUserInfo(); Button은 다음과 같이 바인딩됩니다. 왜 DataContext를 설정해야합니까? – xaria
Silverlight 및 WPF에서 데이터 바인딩이 작동하는 방식에 대해 약간의 오해가 있다고 생각합니다. 바인딩 표현식은 뷰의 데이터 컨텍스트에서 일치하는 특성을 찾습니다. 요소 바인딩은 하나의 XAML 요소 값을 다른 XAML 요소의 특성에 바인딩하는 것을 의미합니다. – KodeKreachor