Avatar
Majkel
Člen
Avatar
Majkel:

Ahoj, mám problém s UpdateSourceTrig­ger=PropertyChan­ged. Když zadám do textboxu jakýkoli text, tak by měl být button enable, ale zůstává pořád disabled. Nevíte někdo, kde může být problém?

LoginView.xaml

<TextBox x:Name="UserLogin" Text="{Binding Path=UserLogin, UpdateSourceTrigger=PropertyChanged}" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,10"></TextBox>
<Button x:Name="UserLoginAction">Login</Button>

LoginViewModel.cs

class LoginViewModel : Screen, IShell
    {
        IWindowManager WindowManager { get; set; }

        private string userLogin;
        public string UserLogin
        {
            get { return userLogin; }
            set { userLogin = value; NotifyOfPropertyChange(() => UserLogin); }
        }

        private string userPassword;
        public string UserPassword
        {
            get { return userPassword; }
            set { userPassword = value; NotifyOfPropertyChange(() => UserPassword); }
        }

        // Konstruktor
        public LoginViewModel()
        {

        }

        #region ACTIONS

        // USER LOGIN ACTION
        public void UserLoginAction()
        {
            MessageBox.Show(UserLogin);
        }
        public bool CanUserLoginAction()
        {
            return !String.IsNullOrWhiteSpace(UserLogin);
        }

        #endregion
    }
Editováno 30.10.2015 13:54
 
Odpovědět 30.10.2015 13:53
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

Nevim jak v caliburn, ale v beznem WPF musite budto notifikovat i o zmene CanUserLoginAction:

OnPropertyChan­ged("CanUserLo­ginAction")

Pravdepodobne budete muset i v caliburnu..? Notifikovat pri zmene username..

 
Nahoru Odpovědět  +1 26. února 0:44
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

No a ta druhá možnost je udělat to přes command a can execute :-) ty se totiž "refreshují" při každém eventu na UI (jako je klik, lost focus, máčknutí klávesy atp.) případně jde vyvolat ručně (InvalidateRe­querySuggested)

 
Nahoru Odpovědět 26. února 1:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.