我有一个已实施INotifyPropertyChanged
的课程。这个类UserInfo
有一个布尔变量isuserLoggedIn。
现在在我的mainform中我有一些isEnabled我希望绑定到UserInfo.isuserLoggedIn
的按钮。
怎么做?
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}"/>
答案 0 :(得分:2)
您需要将视图的DataContext设置为UserInfo类的实例。然后将按钮的IsEnabled属性绑定到UserInfo视图模型上的UserIsLoggedIn布尔属性。以下是将元素的属性绑定到相应视图模型上的属性的示例:passing a gridview selected item value to a different ViewModel of different Usercontrol
看到你的编辑后,你将再次需要将视图的DataContext设置为currentUser对象,然后删除按钮的IsEnabled绑定表达式的ElementName部分。
答案 1 :(得分:0)
您可以将IsEnabled
绑定到用户名文本框的Length
:
<TextBox Name="usernameTxt" Width="100" Height="30"/>
<Button Content="SomeButton " Width="100" Height="30"
IsEnabled="{Binding ElementName=usernameTxt, Path=Text.Length, Mode=OneWay}"></Button>