WPF MVVM查看或查找或加入其他实体

时间:2013-07-11 20:43:50

标签: wpf entity-framework mvvm

我开始使用WPF和MVVM。我正在阅读Code Project Article,这非常有趣并且提供了一个很好的快速入门。我正在使用Entity Framework,我很高兴我在ListView中列出了所有实体。

我很好奇你将如何正确地实现查找 - 在视图模型中或创建一个新模型。以一个人的简单情况为例。数据结构可能是:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public Toy FaveToy { get; set; }
}

public class Toy
{
    public string Name { get; set; }
    public string Model { get; set; }
    public string Manufacturer { get; set; }
}

我希望我的列表视图显示列FirstName,LastName,DateOfBirth,Fave Toy,Manufacturer。

玩具字段将是名称+“”+模型中的组合字符串。

所以给出了我链接的示例中的一些代码(为了示例,我已经将Person类击败了):

观看次数的基类

public abstract class ViewModelBase : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;

        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

我对人物视图的实施

public class PersonViewModel : ViewModelBase 
{
    private ObservableCollection<Person> _Person;

    public PersonViewModel()
    {
        _Person = new ObservableCollection<Person>();

        Entities context = new Entities();

        foreach(var person in context.Person.ToList())
        {
            _Person.Add(person);
        }
    }

    public ObservableCollection<Person> Person
    {
        get
        {
            return _Person;
        }
        set
        {
            _Person = value;
            this.OnPropertyChanged("Person");
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您想自动通过FaveToy属性访问玩具。

通常情况下,这将创建Person和Toy之间的关系。完成后,您的Person实体类型将如下所示:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime DateOfBirth { get; set; }
    public virtual Toy FaveToy { get; set; }
}

注意FaveToy上的“虚拟”。这表示可以通过 person实例 .FaveToy访问的导航属性。这可以通过点表示法或使用绑定上的path属性在XAML中表示。以下是讨论导航属性的链接:http://msdn.microsoft.com/en-us/data/jj713564.aspx

如果你想通过名称和型号的组合来代表玩具,那么转换器就可以完成绑定。以下是讨论转化器http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

的链接

希望这有帮助......杰森

PS - Josh Smith在讨论WPF和MVVM时非常棒http://joshsmithonwpf.wordpress.com/a-guided-tour-of-wpf/

如果你是一个VB家伙,亚历山德罗对我见过的最好的VB讨论:http://community.visual-basic.it/Alessandroenglish/archive/2010/08/13/31861.aspx

PSS - WPF和MVVM(或Windows 8和XAML)非常棒。绝对值得你花时间去接。