gpt4 book ai didi

c# - 从其他ViewModel调用方法

转载 作者:行者123 更新时间:2023-12-03 10:42:58 25 4
gpt4 key购买 nike

我正在编写用于管理工具 list 的程序,当我让用户将工具标记为“已修复”时遇到了问题。

该程序应如下工作:

使用TIView,TIViewModel,TIModel:

  • 员工 checkout 工具。
  • 工具在使用过程中碰巧损坏。
  • 员工退货将其标记为损坏并报告问题的工具。
  • 该工具被标记为已退回并被锁定,无法 check out ,直到修复。


  • 使用VPRView,VPRViewModel和VPRModel:
  • 检查员进入数据网格,其中显示了所有有问题的工具。
  • 检查员纠正问题,将工具标记为固定,然后提交数据。
  • 程序使用检查员ID号及其解决方案更新SQLite数据库,将问题标记为已修复,并记录完成日期/时间。


  • 问题步骤:

    8.然后,程序将运行TIViewModel中的PopulateToolInventory方法来更新 list ,以使该工具不再被锁定。

    总结:

    当检查器将工具标记为固定时,将使用VPRView,VPRViewModel和VPRModel更新数据库。 TIViewModel中提供了为工具 list 提取数据的方法。通过VPRViewModel将数据上传到数据库后,如何从VPRViewModel获取应用程序以执行“PopulateToolInventory”方法?

    代码样例:

    VPRViewModel:
        public void SubmitSolution()
    {
    VPRModel vprm = new VPRModel();
    vprm.SubmitProblemSolution(ProblemSolved, ProblemSolution, InspectorID, SelectedReport[0].ToString());
    ProblemReports = vprm.RetrieveProblemReports();
    InspectorID = null;
    ProblemSolution = null;
    ProblemSolved = false;
    MessageBox.Show("Solution successfully recorded!", "Success!", MessageBoxButton.OK);
    // This is where I would want to call the method from the TIViewModel to update the data grid on the TIView.
    }

    TIViewModel:
    private DataTable _toolInventory;
    public DataTable ToolInventory
    {
    get { return _toolInventory; }
    set
    {
    _toolInventory = value;
    NotifyOfPropertyChange(() => ToolInventory);
    }
    }

    public void PopulateToolInventory()
    {
    TIModel tim = new TIModel();
    ToolInventory = tim.RetrieveToolInventory();
    }

    ShellViewModel:
    class ShellViewModel : Conductor<object>
    {
    public void Open_ToolInventory()
    {
    ActivateItem(new TIViewModel());
    }
    public void ViewProblemReport()
    {
    WindowManager wm = new WindowManager();
    VPRViewModel vprvm = new VPRViewModel();
    wm.ShowDialog(vprvm);
    }
    }

    仅供引用:我正在使用Caliburn.Micro,如果这对任何解决方案都有用的话。

    希望这是足够的信息。如果没有,只是问您需要什么!另外,请不要活着吃我的代码。我是自学成才的,并且知道我与专业的开发人员还很遥远,但这是我的一种激情,我真的很享受。赞赏 build 性的批评,请不要让我感到愚蠢。

    最佳答案

    在问题注释中使用Ed的想法进行了以下操作。

    class ShellViewModel : Conductor<object>
    {
    public void Open_ToolInventory()
    {
    ActivateItem(new TIViewModel());
    }
    public void ViewProblemReport()
    {
    WindowManager wm = new WindowManager();
    VPRViewModel vprvm = new VPRViewModel();
    wm.ShowDialog(vprvm);
    }
    }

    更改为:
    class ShellViewModel : Conductor<object>
    {
    TIViewModel tivm = new TIViewModel();
    VPRViewModel vprvm = new VPRViewModel();

    public void OpenToolInventory()
    {
    ActivateItem(tivm);
    }
    public void ViewProblemReport()
    {
    WindowManager wm = new WindowManager();
    wm.ShowDialog(vprvm);
    tivm.PopulateToolInventory();
    }
    }

    在对话框关闭后,此方法将运行目标方法,更新工具 list 以立即反射(reflect)所有已解决的问题。你是最好的,埃德!

    关于c# - 从其他ViewModel调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673730/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com