В MVVM Light нужно сделать логику для нажатия кнопки для создания базы данных

1

Я новичок в MVVM Light для WPF. Я использую VIsual Studio 2013 и создал проект с использованием С#. У меня есть логика для кнопки в xaml. Когда пользователь нажимает эту кнопку, я хотел бы, чтобы приложение создало базу данных и данные. У меня есть команда привязки в xaml, которая будет запускать команду relay. У меня также есть метод в модели для создания базы данных и данных. Я создал команду ретрансляции в модели представления, но за ее пределами я не совсем уверен, что делать дальше. Любая помощь будет оценена по достоинству.

Просмотр - xaml

<Button Content="New Project" Margin="0,0,3,0" Command="{Binding AddProjectCommand}" IsEnabled="{Binding CommNotStreaming}" Grid.Column="2" Grid.Row="0"/>

Просмотреть модель -

public class ProjectConfigViewModel : ViewModelBase
{
    //Binding AddProjectCommand
    public RelayCommand AddProjectCommand { get; set; }


    private string consoleText { get; set; }
    private StringBuilder consoleBuilder = new StringBuilder(360);

    public ProjectConfigViewModel()
    {
        this.AddProjectCommand = new RelayCommand(this.AddProject);

    }

    public void AddProject()
    {
          //Not really sure what to do here to call the ProjectDbInteraction class

    }

}    

Модель - класс взаимодействия с базой данных

public class ProjectDbInteraction
{
    //String rawDBConnectionString = "Server=localhost; Database=12_rse_002_db; uid=root; pwd=password; Connection Timeout=5;"; //TODO Either pick a standard for make this edittable

    public void CreateProjectDb(string projName)
    {
        try
        {
            MySqlConnection connection = new MySqlConnection("DataSource=localhost;UserId=root;pwd=password");
            MySqlCommand command = new MySqlCommand("CREATE DATABASE " + projName + ";", connection);
            connection.Open();
            command.CommandText = "DROP DATABASE IF EXISTS " + projName;
            command.ExecuteNonQuery();
            command.CommandText = "CREATE TABLE Projects(ProjectID INT NOT NULL, ProjectName VARCHAR(VARCHAR(255), ProjectStartDate DateTime, ProjectEndDate DateTime, ProjectNotes VARCHAR(MAX) PRIMARY KEY (ProjectID))";
            command.ExecuteNonQuery();
            //command.CommandText = "CREATE TABLE Metabolites(MetaboliteID VARCHAR(10) NOT NULL, Metabolite_Name VARCHAR(45) NULL, ReactionTime INT NULL, PRIMARY KEY (MetaboliteID)";
            connection.Close();
        }
        catch (Exception)
        {

        }
    }


    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
Теги:
wpf
visual-studio-2013
mvvm-light

1 ответ

1
Лучший ответ

Начните с замены

this.AddProjectCommand = new RelayCommand(this.AddProject);

с

this.AddProjectCommand=new RelayCommand(() => AddProject());

,

Затем в вашем методе AddProject(), который вызывает создание базы данных, например:

ProjectDbInteraction.CreateProjectDb("some name");
  • 1
    Спасибо, что сработало. Я ценю это Феодосия.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню