将函数绑定到视图模型中数据网格视图中的复选框

CoderNoob

再会。我在将函数绑定到 datagridview 中的复选框时遇到了一些问题。我正在使用 windows 窗体和 mvvm 模型。我在 datagridview 中有一个数据和一行复选框。如果选中复选框,我希望视图模型使用 if 语句执行函数。

这是我的 UI 现在的样子:

这是我的 UI 现在的样子

例如:如果我选中第一个复选框并按下“创建软件质量报告”按钮,我希望程序在视图模型中执行一个函数。我尝试访问视图模型中的 datagridview,但是使用 mvvm 您不应该从视图模型访问视图。你怎么能做到这一点?是否有可能在视图模型中有类似的东西:(如果 datagridview1.checkbox1 == true){...}?

我希望有人能给我一个大方向。

提前致谢 :)

我想在这个函数中使用一个函数(我的视图模型中的一个函数):

private void ExecuteCreateSofwareQualityReportButtonClick()
    {
        

        OpenFileDialog OpenExcel = new OpenFileDialog()
        {
            Title = "Save Excel File",
            CheckPathExists = true,
            DefaultExt = "txt",
            Filter = "Excel files (*.xls)|*.xls",
            FilterIndex = 1,
            RestoreDirectory = true
        };

        if (OpenExcel.ShowDialog() == DialogResult.OK)
        {
            Microsoft.Office.Interop.Excel.Application xlApp;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;

            xlApp = new Microsoft.Office.Interop.Excel.Application();
            xlWorkBook = xlApp.Workbooks.Open(OpenExcel.FileName);


            //Excel application is stopped and the process is killed
            CloseExcelProcess(xlWorkBook, xlApp);
        }

    }

这是我的模型:

public class ApplicationModel : BindableBase
{
    private Project _selectedProject;

    private Tracker _selectedTracker;

    private string _selectedSoftwareElement;

    public BindingList<Project> ProjectList { get; set; } = new BindingList<Project>();

    public BindingList<Tracker> TrackerList { get; set; } = new BindingList<Tracker>();

    public BindingList<Item> ItemList { get; set; } = new BindingList<Item>();

    public BindingList<string> SoftwareElements = new BindingList<string>();


    public Project SelectedProject
    {
        get 
        { 
            return _selectedProject; 
        }
        set 
        { 
            SetProperty(ref _selectedProject, value);  
        }
    }

    public Tracker SelectedTracker
    {
        get 
        { 
            return _selectedTracker; 
        }
        set
        {
            SetProperty(ref _selectedTracker, value);
        }
    }

    public string SelectedSoftwareElement
    {
        get
        {
            return _selectedSoftwareElement;
        }
        set
        {
            SetProperty(ref _selectedSoftwareElement, value);
        }
    }
}

我希望这有帮助

迈萨姆·阿萨迪

我将输入一个示例。将您的代码与它匹配。如何使用checkboxinDataGrid并将其绑定到viewmodel

你的模特

pulic class Model : INotifyPropertyChanged
{
   public int ID { get; set; }
   public string Name { get; set; }
   private bool isCheckBox;

   public bool IsCheckBox
   {
      get { return isCheckBox; }
      set
      {
          isCheckBox = value;
          OnPropertyChange(nameof(IsCheckBox));
      }
   }
   public event PropertyChangedEventHandler PropertyChanged;

   protected void OnPropertyChange(string propertyName)
   {
      PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
   }
}

现在视图模型

public class MainViewModel
{
   public List<Model> myList { get; set; }
   public MainViewModel()
   {
      myList = new List<Model>()
      {
         new Model(){ ID = 1, Name = "name 1" IsCheckBox = true},
         new Model(){ ID = 2, Name = "name 2" IsCheckBox = false},
      };
   }
}

现在在MainWindow.cs

public MainWindow()
{
   this.DataContext = new MainViewModel();
}

现在MainWindow.xaml

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Object}">
        <DataGrid.Columns>
           <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
           <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
           <DataGridCheckBoxColumn  Header="Checkbox Column" Binding="{Binding IsCheckBox, Mode=TwoWay}"/> 
        </DataGrid.Columns>
</DataGrid>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MVC 5:模型中的字典绑定到视图中的一系列复选框?

将视图模型中的列表与字典绑定到复选框

无法将网格绑定到视图模型-网格中没有数据

ASP.NET MVC无法发布绑定到复选框的视图模型

SetFocus到子窗体数据表视图中的控件,其中复选框= True

构建阵列以从MVC视图中的复选框输入数据

将复选框列表传递到视图中并拉出IEnumerable

通过委托将值从复选框传递到列表视图中的标签 (xamarin.forms)

列表视图中的 csv 和复选框将选中的复选框代码保存在 ArrayAdapter 中

如何将多个模型中的数据绑定到单个视图中的列表

ember:将功能重新绑定到视图属性(复选框观察文本区域)

将数据绑定到网格视图

在视图中填充复选框

在视图模型中设置isActive然后选中复选框

MVC复选框未绑定到EditorTemplate中的模型

从子视图中的复选框更改访问父视图模型

将模型数据绑定到视图-Spring

将mvc复选框绑定到javascript函数

将图像控件绑定到数据网格数据上下文(视图模型)

将两个列表绑定到一个数据网格视图中

WordPress附件分类法复选框组未保存在网格视图中

WinForm DevExpress Xtragrid以编程方式检查网格视图中的“指定”复选框

如何根据一定的条件保持选中的网格视图中的复选框?

使用 javacsript 在网格视图中获取复选框选中行的相应行值

在网格视图中选中复选框时如何增加金额

从 SQL Server 的逗号分隔列表设置网格视图中的复选框选择

根据值选择复选框,并在网格视图中禁用剩余

在网格视图中获取复选框值,而不是使用foreach循环

如何在网格视图中添加多个复选框值