使用MVVM

时间:2015-10-15 12:48:21

标签: c# wpf xaml mvvm user-controls

到目前为止,我有五种不同的UserControl,并且这个数字可以在将来增加。我想使用MVVM模式将它们添加到网格中。

我有一个类装置,可以作为UserControl的viewModel

public class Apparatus 
{
    private string _appratusName;
    private string _imageSource;
    private string _experiments;
    private GridProperties gridProps;

    public Apparatus()
    {
        _appratusName = "";
        _imageSource = "";
        Experiments = "";
    }

    public Apparatus(string name, string imgSource, string exp)
    {
        _appratusName = name;
        _imageSource = imgSource;
        _experiments = exp;

    }}

GridProperties是另一个用于在网格中包含UserControls位置的类。

public class GridProperties
{
    public int Row;

    public int Column;

    public int ColumnSpan;

    public int RowSpan;

    public GridProperties(int row, int col, int rowSpan, int columnSpan)
    {
        this.Row = row;
        this.Column = col;
        this.RowSpan = rowSpan;
        this.ColumnSpan = columnSpan;
    }

类中的每个字段都有公共属性。

还有 ExperimentGridViewModel 之类的

    public class ExperimentGridViewModel : ViewModelBaseClass
{
    private int _apparatusCount;
    private string _workingExperiment;
    private int _gridRowCount;
    private int _gridColumnCount;
    private ExperimentWindowViewModel _windowModel;

    private ObservableCollection<Apparatus> _apparatusAppplied;}

我想添加UserControls,基本上是使用MVVM等设备,如Burette,pippete等。

我已经找到了一些答案,并发现可以使用 DataTemplates和ItemsControl 来完成,但问题是我只有一种数据类型,即装置对于我的所有UserControls,我是否需要为每个用户控件创建不同的类,或者我还能做些什么。

现在我所能做的就是这样的事情。

<Grid.Resources>
        <DataTemplate DataType="{x:Type model:Apparatus }">
            <apparatuses:Burette></apparatuses:Burette>
        </DataTemplate>
    </Grid.Resources>
    <ItemsControl ItemsSource="{Binding AppliedApparatus}" >

    </ItemsControl>

这会将滴定管添加到网格中,我无法添加任何其他内容,因为所有设备都是 Appatatus

此外,任何人都可以告诉我如何将viewModel中的GridProperties绑定到UserControls的附加网格属性。

0 个答案:

没有答案