Я новичок в 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));
}
}
}
Начните с замены
this.AddProjectCommand = new RelayCommand(this.AddProject);
с
this.AddProjectCommand=new RelayCommand(() => AddProject());
,
Затем в вашем методе AddProject(), который вызывает создание базы данных, например:
ProjectDbInteraction.CreateProjectDb("some name");