Передать параметр в ViewModel из Behavior WPF MVVM

205
26 января 2018, 20:15

Каким образом из реализации поведения контрола можно передать свойство или параметр во ViewModel. В окне имеется PasswordBox у которого реализовано поведение окна обработку Password с помощью Behavior.

Код Behavior

 public class PasswordBehavior:Behavior<PasswordBox>
    {
        public static readonly DependencyProperty PasswordProperty =
            DependencyProperty.Register("Password", typeof(string), typeof(PasswordBehavior), new PropertyMetadata(default(string)));
        private bool _skipUpdate;
        public string Password
        {
            get { return (string)GetValue(PasswordProperty); }
            set { SetValue(PasswordProperty, value); }
        }
        protected override void OnAttached()
        {
            base.OnAttached();
            AssociatedObject.PasswordChanged += PasswordBox_PasswordChanged;
        }
        protected override void OnDetaching()
        {
            base.OnDetaching();
            AssociatedObject.PasswordChanged -= PasswordBox_PasswordChanged;
        }
        protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
        {
            base.OnPropertyChanged(e);
            if (e.Property == PasswordProperty)
            {
                if (!_skipUpdate)
                {
                    _skipUpdate = true;
                    AssociatedObject.Password = e.NewValue as string;
                    _skipUpdate = false;
                }
            }
        }
        private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
        {
            _skipUpdate = true;
            Password = AssociatedObject.Password;
            _skipUpdate = false;
        }
    }

Реализация XAML

<PasswordBox
            Name="Password"
            MaxLength="6">
            <i:Interaction.Behaviors>
                <local:PasswordBehavior Password="{Binding Password, Mode=TwoWay}" />
            </i:Interaction.Behaviors>
        </PasswordBox>

В идеале потом переделаю под SecureString или попробую передать хэш

READ ALSO
.NET C# WPF DataGrid Как ускорить отрисовку?

.NET C# WPF DataGrid Как ускорить отрисовку?

Доброго времени суток! Имеется некий DataGrid:

267
Программа завершилась с кодом 1073741855 (0x4000001f)

Программа завершилась с кодом 1073741855 (0x4000001f)

Пробовал гуглить по этому коду, но ничего не нашелВообще, я не удивлен крешу, так как тут 20+ потоков, которые вызывают WinApi-функции через библиотеку...

335
Как создать numeric столбец в таблице dbf на C# ADO.NET

Как создать numeric столбец в таблице dbf на C# ADO.NET

Создаю таблицу в dbf, так работает нормально

227
Почему не подключается библиотека?

Почему не подключается библиотека?

Пробовал компилировать в режиме x32 и x64, ещё я пробовал подключать "KernelBase" и "ntdll"? DLL находятся в папке с запускаемой программой

173