在这种情况下,如何正确应用 MVVM

本文关键字:应用 MVVM 何正确 这种情况下 | 更新日期: 2023-09-27 18:35:52

我将应用程序从Windows Forms迁移到WPF,所以我正在尝试使用MVVM模式,但这对我来说有点棘手。

在Windows窗体中,我有一个包含进度条的窗体,该进度条定义了一些新方法,这些方法允许我执行步骤,设置其值等。此代码放置在进度栏的代码后面,如下所示:

public class MyProgressBar : ProgressBar
{
    public MyProgressBar ()
    {
        InitializeComponent();
    }
    public void Method01()
    {...}
    public void Method02()
    {...}
    public void Method03()
    {...}
}

Method01、Method02 和 Method03 的代码用于容器形式,因此,这是我的问题:在 WPF 中,由于我使用 MVVM 模式,我必须在哪里放置该代码?

到目前为止,我有这些课程:

我的模型:

public class MyFormModel : DataTable
{
    public OutputResultsDataTable()
        : base()
    {
        Columns.Add(new DataColumn("Number"));
        Columns.Add(new DataColumn("Message"));
        Columns.Add(new DataColumn("Detail"));
    }
}

我的视图模型:

public class MyNewWPFForm
{
    /// <summary>
    /// 
    /// </summary>
    public MyFormModel MyData{ get; set; }
    /// <summary>
    /// Constructor
    /// </summary>
    public MyNewWPFForm()
    {
        if (System.Windows.Application.Current.MainWindow != null)
        {
            MyData= new MyFormModel ();                
        }
    }
}

在 WPF 中,我已经创建了我的新进度栏控件及其容器形式,即使我一直在阅读有关 MVVM 的信息,但我不明白我必须将 Method0X 的代码放在哪里,因为根据我所阅读的内容,我必须将该代码放在 viewModel 中,但是,这是另一个问题: 我如何从我的视图模型访问我的进度条,因为它在另一个窗体中?

希望有人能帮助我。提前谢谢。

在这种情况下,如何正确应用 MVVM

听起来控件

上的方法用于设置控件的状态。可以使用依赖项属性来执行此操作。

使用绑定将视图连接到视图模型。

为控件进度创建属性。

然后在 Xaml 中添加绑定

<MyProgressBar Progress="{Binding CurrentProgress}" />

将视图的数据上下文设置为新的视图模型。当前进度是视图模型上的一个属性。在视图模型上实现 INotifyPropertyChanged。

为了在控件中添加和删除内容,您可以 ObservableCollection。