У меня есть класс, который реализовал INotifyPropertyChanged
. Этот класс UserInfo
имеет логическую переменную isuserLoggedIn. Теперь в моей основной форме у меня есть кнопки, чей 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}"/>
Но я уже объявил экземпляр класса UserInfo в MainWindow UserInfo currentUser = UserInfo.GetUserInfo(); и Button имеет привязку следующим образом: Почему мне все еще нужно установить DataContext? – xaria
Я думаю, что у вас есть небольшое недоразумение о том, как привязка данных работает в Silverlight и WPF. Ваши выражения привязки будут искать подходящее свойство в контексте данных представления. Связывание элементов относится к привязке значения одного элемента XAML к атрибуту другого элемента XAML. – KodeKreachor