2016-09-06 2 views
1

Я запускающее событие изменения пароля и команды действия XamlПароль изменения поведения событие не работает должным образом в призме с помощью MVVM

<PasswordBox VmWindow:PasswordHelper.Attach="True" Height="25" Width="180" HorizontalAlignment="Left" 
          FontFamily="Arial" FontSize="11" BorderBrush="#FF959BA0" TabIndex="2" 
          VmWindow:PasswordHelper.Password="{Binding Path=Password, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" > 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="PasswordChanged"> 
           <i:InvokeCommandAction Command="{Binding ChangePasswordCommand}" /> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 

       </PasswordBox> 

Пароль изменен код события:

private static void PasswordChanged(object sender, RoutedEventArgs e) 
     { 
      PasswordBox passwordBox = sender as PasswordBox; 
      SetIsUpdating(passwordBox, true); 
      SetPassword(passwordBox, passwordBox.Password); 
      SetIsUpdating(passwordBox, false); 
     } 

Command Действие

public ICommand ChangePasswordCommand { get; private set; } 
     public LoginViewModel ViewModel { get; set; } 
     private void ExecuteChangePasswordCommand() 
     { 
      try 
      { 
       if (loginModel != null) 
       { 
        loginModel.LoginPassword = Password; 
       } 
      } 
      catch (Exception exception) 
      { 
      } 

     } 

Проблема:

Что происходит intially когда приложение загружает я ввести символ в текстовом поле в «пожарах событий первого, а затем действие, которое хорошо нормально Senario», но когда я нажимаю второй полукокс «мои действие пожары сначала тогда триггер, что это проблема»

Я не знаю, погоды это предопределенный процесс или я делаю что-то неправильно .Because по мне заказ должен всегда событию, действие не действия, событие

Пожалуйста, дайте мне знать, где я ошибаюсь.

ответ

0

Наконец, проведя много времени я могу решить данную проблему с некоторыми дополнительными изменениями

Добавить Отнесение Microsoft.Expressions.Interactions

Добавить два refrences:

xmlns:i="clrnamespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:ei=http://schemas.microsoft.com/expression/2010/interactions 

сделано несколько изменений в пароль:

<PasswordBox VmWindow:PasswordHelper.Attach="True" Height="25" Width="180" HorizontalAlignment="Left" 
          FontFamily="Arial" FontSize="11" BorderBrush="#FF959BA0" TabIndex="2" 
          VmWindow:PasswordHelper.Password="{Binding Path=Password, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" > 
        <i:Interaction.Triggers> 
         <i:EventTrigger EventName="PasswordChanged"> 
          <ei:CallMethodAction TargetObject="{Binding}" MethodName="changePassword"/> 
         </i:EventTrigger> 
        </i:Interaction.Triggers> 


       </PasswordBox> 

Создать метод в LoginViewModel

public void changePassword(object sender, RoutedEventArgs e) 
     { 
      PasswordBox passwordBox = sender as PasswordBox; 
      loginModel.LoginPassword = passwordBox.Password; 
     } 

Done С изменяет чистую MVVM, без кода позади теперь