private void Src_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { int index = Src.SelectedIndex; if (index >= 0) { SrcContext.Show(MousePosition.X, MousePosition.Y); } } }
public App() { Locator.CurrentMutable.RegisterViewsForViewModels(Assembly.GetCallingAssembly()); ConfigurationRoot = BuildConfiguration(); using var context = new SrcContext(); context.Database.EnsureCreated(); //Check database status context.Database.EnsureCreated(); context.Database.Migrate(); context.SaveChanges(); }
private void BindAll() { this.WhenActivated(disposableRegistration => { //Bind name this.Bind(ViewModel, viewModel => viewModel.Value.Name, view => view.NameText.Text) .DisposeWith(disposableRegistration); //Bind Category this.OneWayBind(ViewModel, viewModel => viewModel.Value.Category, view => view.CategoryText.Text) .DisposeWith(disposableRegistration); //Bind Tags this.OneWayBind(ViewModel, viewModel => viewModel.TagsText, view => view.TagsText.Text) .DisposeWith(disposableRegistration); //Bind Path this.Bind(ViewModel, viewModel => viewModel.Value.Path, view => view.PathText.Text) .DisposeWith(disposableRegistration); //Bind Description this.Bind(ViewModel, viewModel => viewModel.Value.Description, view => view.DescriptionText.Text) .DisposeWith(disposableRegistration); //Bind ModifyTags this.BindCommand(ViewModel, viewModel => viewModel.ModifyTags, view => view.ModifyTags) .DisposeWith(disposableRegistration); //Bind ModifyPath this.BindCommand(ViewModel, viewModel => viewModel.ModifyPath, view => view.ModifyPath) .DisposeWith(disposableRegistration); //Bind ModifyCategory this.BindCommand(ViewModel, viewModel => viewModel.ModifyCategory, view => view.ModifyCategory) .DisposeWith(disposableRegistration); //Bind Title this.Bind(ViewModel, viewModel => viewModel.Value.Name, view => view.Title) .DisposeWith(disposableRegistration); //Subscribe Cancel Cancel.Click += (sender, e) => { Close(); }; //Subscribe Save Save.Click += async(sender, e) => { if (string.IsNullOrWhiteSpace(ViewModel.Value.Name)) { MessageBox.Show("请输入名称", "提示", MessageBoxButton.OK, MessageBoxImage.Asterisk); } else { await using var context = new SrcContext(); if (ViewModel.Value.SourceId == 0) { await context.Sources.AddAsync(ViewModel.Value); } else { var modify = context.Sources.First(src => src.SourceId == ViewModel.Value.SourceId); modify.Description = ViewModel.Value.Description; modify.Category = ViewModel.Value.Category; modify.Name = ViewModel.Value.Name; modify.TagsString = ViewModel.TagsText; modify.Path = ViewModel.Value.Path; } //Add Tags foreach (var tag in ViewModel.Value.Tags.Where(tag => !(from t in context.Tags where t.Name == tag select t).Any())) { await context.Tags.AddAsync(new Tag { Name = tag }); } //Add Category if (!(from c in context.Categories where c.Name == ViewModel.Value.Category select c).Any()) { await context.Categories.AddAsync(new Category { Name = ViewModel.Value.Category }); } await context.SaveChangesAsync().ConfigureAwait(false); Close(); } }; //Subscribe ModifyPath ModifyPath.Click += (sender, e) => { var dialog = new OpenFileDialog { Multiselect = false, Title = "选择源", Filter = "源文件 (*.*)|*.*", CheckFileExists = true, InitialDirectory = System.IO.Path.GetDirectoryName(ViewModel.Value.Path), FileName = System.IO.Path.GetFileName(ViewModel.Value.Path) }; dialog.ShowDialog(); ViewModel.Value.Path = System.IO.Path.GetFullPath(dialog.FileName); ViewModel.RaisePropertyChanged(nameof(ViewModel.Value)); }; }); }