Авторизация в БД MySQL C# WPF MVVM

891
12 октября 2017, 09:21

Здравствуйте! Пишу авторизацию на C# WPF MVVM в БД MySQL, используя EF6. Необходимо написать команду, которая будет выполняться при нажатии на кнопку "авторизоваться", забирая данные из текстовых полей login и password и производить какие-либо дальнейшие действия. Как осуществить эту передачу из вью авторизации и использовать их для команды? Есть подозрение, что нужно написать свойства для логина и пароля, забиндить их в форме авторизации и уже через свойства производить запрос к БД...

Класс RelayCommand

public class RelayCommand : ICommand
    {
        private Action<object> execute;
        private Func<object, bool> canExecute;
        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }
        public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
        {
            this.execute = execute;
            this.canExecute = canExecute;
        }
        public bool CanExecute(object parameter)
        {
            return canExecute == null || canExecute(parameter);
        }
        public void Execute(object parameter)
        {
            execute(parameter);
        }
    }

Класс AuthViewModel

public class AuthViewModel : INotifyPropertyChanged
{
    private object authForm;
    public object AuthForm
    {
        get { return authForm; }
        set
        {
            if (Equals(authForm, value))
                return;
            authForm = value;
            OnPropertyChanged("AuthForm");
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    public void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

Представление AuthView

<UserControl x:Class="FLibrary.Views.AuthView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:FLibrary.Views"
         xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid ShowGridLines="True">
    <materialDesign:Card materialDesign:ShadowAssist.ShadowDepth="Depth1" VerticalAlignment="Center" Width="300" Height="250">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="0.3*"/>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="0.5*"/>
            </Grid.RowDefinitions>
            <Image Grid.Row="0" Source="/Images/4.jpg" Stretch="UniformToFill"/>
            <StackPanel Orientation="Vertical" Grid.Row="1">
                <StackPanel Orientation="Vertical">
                    <TextBox x:Name="loginBox" materialDesign:HintAssist.Hint="Login" Width="200" Height="40"/>
                </StackPanel>
                <StackPanel Orientation="Vertical" >
                    <PasswordBox x:Name="passwordBox" materialDesign:HintAssist.Hint="Password" Width="200" Height="40"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" Margin="0 20 0 0">
                    <CheckBox HorizontalAlignment="Left" Margin="48 0 0 0"  Content="Запомнить"/>
                    <TextBlock Margin="32 2 0 0" HorizontalAlignment="Right">
                        <Hyperlink Style="{StaticResource MaterialDesignCaptionHyperlink}">Забыли пароль?</Hyperlink>
                    </TextBlock>
                </StackPanel>
            </StackPanel>
            <Button IsEnabled="{Binding ElementName=loginBox, Path=Text.Length}" Grid.Row="2" Width="200" Height="40" Margin="0 -20 0 0" Content="Авторизоваться"/>
        </Grid>
    </materialDesign:Card>

    <ContentControl Content="{Binding AuthForm}"/>
</Grid>

READ ALSO
Как при выходе закрыть ранее запущенные процессы?

Как при выходе закрыть ранее запущенные процессы?

Есть простая программка, которая выводи лист ексель файликов, которые загружены в определенную папкуПо щелчку каждый из файликов открывается...

282
Подключение системы оплаты товара [требует правки]

Подключение системы оплаты товара [требует правки]

Добрый вечер! Пытаюсь найти информацию по подключению (интернет-эквайринга?) на web-Приложение ASPNET

215
Как засекать текущую время и дату C#

Как засекать текущую время и дату C#

Всем здравствуйте! Как засекать текущую время и дату при отметке чекбоксомТам данные при нажатии кнопки получается из базы и отображается...

275