3

を実装したクラスがありますINotifyPropertyChanged。このクラスUserInfoにはブール変数 isuserLoggedIn があります。今私のメインフォームには、バインドしたい 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}"/>
4

2 に答える 2

2

ビューのDataContextをUserInfoクラスのインスタンスに設定する必要があります。次に、ボタンのIsEnabledプロパティをUserInfoビューモデルのUserIsLoggedInブールプロパティにバインドします。要素の属性を対応するビューモデルのプロパティにバインドする例を次に示します。グリッドビューで選択したアイテムの値を、異なるユーザーコントロールの異なるViewModelに渡します。

編集内容を確認したら、ビューのDataContextをcurrentUserオブジェクトに設定し、ボタンのIsEnabledバインディング式のElementName部分を削除する必要があります。

于 2012-04-05T03:48:22.913 に答える