簡體   English   中英

密碼更改事件行為在使用mvvm的prism中無法正常工作

[英]Password change event behaviour not working properly in prism using mvvm

我正在觸發密碼更改事件和命令操作xaml

 <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);
        }

命令行動

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

        }

問題:

當應用程序加載我在文本框中輸入char時會發生什么事情“事件首先觸發,然后執行正常情況下的操作”,但是當我按下第二個字符“我的操作首先觸發然后觸發這就是問題”

我不知道天氣是預定義的過程還是我做錯了什么。因為根據我的順序應該總是事件,行動行動,事件

請讓我知道我錯在哪里。

最后花了很多時間我能夠通過一些額外的改變來解決上述問題

添加Microsoft.Expressions.Interactions參考

添加兩個參考:

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;
        }

完成改變其干凈的MVVM,現在沒有代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM