Каким образом из реализации поведения контрола можно передать свойство или параметр во 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
или попробую передать хэш
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пробовал гуглить по этому коду, но ничего не нашелВообще, я не удивлен крешу, так как тут 20+ потоков, которые вызывают WinApi-функции через библиотеку...
Создаю таблицу в dbf, так работает нормально
Пробовал компилировать в режиме x32 и x64, ещё я пробовал подключать "KernelBase" и "ntdll"? DLL находятся в папке с запускаемой программой