0

如果您的视图模型包含多个模型(即十多个模型),每个模型都需要相同的功能(即绑定属性) - 唯一不同的是实际模型类型。他们每个人都有自己的绑定属性是否有意义,或者我应该将这个设计重新分解为更优雅的东西,比如模型字典,只需要一个绑定属性,键是与模型关联的字符串。或者有没有比字典更好的替代品?

我正在尝试总体上简化我的视图模型的设计,因此将不胜感激任何建议。

4

1 回答 1

0

我有类似的事情

我有不同的类,例如CustomerData, 我在 1 个名为 Collection 的集合中收集了所有这些类(显然),我从那里将集合设置为视图 dataContext 我只是使用正确的路径来引用我在我的 xaml 中需要的数据例如或者EmployeeDataOrderDataText="{Binding Path=CustomerData.Name}"Text="{Binding Path=EmployeeData.Name"}"

编辑回答评论:我有一个名为 Data 的类,它包含我的 OnPropertyChanged。每当我需要做某事时,如果数据发生更改,我只需在我创建数据的类或使用它的类中这么说。

collection.CustomerData.PropertyChanged += new PropertyChangedEventHandler(Customer_PropertyChanged);

也是我的一个类的一个例子: public class CustomerData : Data { private string company = ""; 私人字符串船=“”;私人字符串地址=“”;私人字符串城市=“”;私人字符串 zipCode = ""; 私人字符串国家=“”;私人字符串 btw_nmbr = ""; 私人布尔 isTempCustomer = true; 私人名单电话号码;私人列表电子邮件地址;

    private string fileName;

    #region public methods
    public string Company
    {
        get
        {
            return company;
        }
        set
        {
            if (company.Trim() != value.Trim())
            {
                company = value;
                OnPropertyChanged("Company");
            }
        }
    }

    public string Ship
    {
        get
        {
            return ship;
        }
        set
        {
            if (ship.Trim() != value.Trim())
            {
                ship = value;
                OnPropertyChanged("Ship");
            }
        }
    }

    public string Adress
    {
        get
        {
            return adress;
        }
        set
        {
            if (adress.Trim() != value.Trim())
            {
                adress = value;
                OnPropertyChanged("Adress");
            }
        }
    }

    public string City
    {
        get
        {
            return city;
        }
        set
        {
            if (city.Trim() != value.Trim())
            {
                city = value;
                OnPropertyChanged("City");
            }
        }
    }

    public string ZipCode
    {
        get
        {
            return zipCode;
        }
        set
        {
            if (zipCode.Trim() != value.Trim())
            {
                zipCode = value;
                OnPropertyChanged("ZipCode");
            }
        }
    }

    public string Country
    {
        get
        {
            return country;
        }
        set
        {
            if (country.Trim() != value.Trim())
            {
                country = value;
                OnPropertyChanged("Country");
            }
        }
    }

    public string BTW_Nmbr
    {
        get
        {
            return btw_nmbr;
        }
        set
        {
            if (btw_nmbr.Trim() != value.Trim())
            {
                btw_nmbr = value;
                OnPropertyChanged("BTW_Nmbr");
            }
        }
    }

    public bool IsTempCustomer
    {
        get
        {
            return isTempCustomer;
        }
        set
        {
            isTempCustomer = value;
            OnPropertyChanged("IsTempCustomer");
        }
    }

    public List<ContactData> PhoneNumbers
    {
        get
        {
            return phoneNumbers;
        }
        set
        {
            phoneNumbers = value;
            OnPropertyChanged("PhoneNumbers");
        }
    }

    public void AddPhoneNumber(ContactData cd)
    {
        phoneNumbers.Add(cd);
        OnPropertyChanged("PhoneNumbers");
    }

    public List<ContactData> EmailAdresses
    {
        get
        {
            return eMailAdresses;
        }
        set
        {
            eMailAdresses = value;
            OnPropertyChanged("EmailAdresses");
        }
    }

    public void AddEmailAdress(ContactData cd)
    {
        eMailAdresses.Add(cd);
        OnPropertyChanged("EmailAdresses");
    }

    public string FileName
    {
        get
        {
            return fileName;
        }
        set
        {
            fileName = value;
            OnPropertyChanged("FileName");
        }
    }

    #endregion
}
于 2013-10-14T13:34:17.693 回答