Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: MVVM, Caliburn.Micro, UpdateSourceTrigger=PropertyChanged

Aktivity
Avatar
Majkel
Člen
Avatar
Majkel:30.10.2015 13:53

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:26.2.2016 0:44

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
26.2.2016 0:44
Totalitní admini..
Avatar
Marian Benčat:26.2.2016 1:18

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.2.2016 1:18
Totalitní admini..
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.