具有依赖项属性的WPF MVVM用户控件

时间:2018-08-14 08:18:49

标签: c# wpf mvvm dependencies

我们正在尝试以正确的方式使用WPF MVVM。 我们构建了一个具有视图模型的用户控件。

usercontrol是具有其他功能的扩展组合框。 目的是我们可以将选定对象从视图模型获取到主窗口。

这个想法是通过一个依赖对象来实现的。

它按预期工作,直到我要将主窗口中的属性绑定到主窗口的视图模型。然后绑定失败。 有解决方法吗?还是我们在犯一些错误?

这是我们的代码:

用户控件:

    public ProjectenZoek()
    {
        InitializeComponent();

        ProjectenZoekViewModel projectenZoekViewModel = new ProjectenZoekViewModel();
        this.DataContext = projectenZoekViewModel;

        var binding = new Binding("GeselecteerdProject") { Mode = BindingMode.TwoWay };
        this.SetBinding(ProjectProperty, binding);
    }

    public DBProject Project
    {
        get { return (DBProject)GetValue(ProjectProperty); }
        set
        {
            var oldValue = (DBProject)GetValue(ProjectProperty);
            if (oldValue != value) SetValue(ProjectProperty, value);
        }
    }

    public static readonly DependencyProperty ProjectProperty =
        DependencyProperty.Register(
            "Project",
            typeof(DBProject),
            typeof(ProjectenZoek),
            new PropertyMetadata(null)
            );

UserControl视图模型:

public class ProjectenZoekViewModel : BaseViewModel
{
    private DBProject geselecteerdproject;

    public DBProject GeselecteerdProject
    {
        get
        {
            return geselecteerdproject;
        }
        set
        {
            geselecteerdproject = value;
            OnPropertyChanged();
        }
    }

主窗口xaml: 因此,如果我们在此处添加绑定“ GeselecteerdProject = {Binding Project},则不会填充用户控件的视图模型中的属性。

            <local:ProjectenZoek Margin="0,0,5,0" HorizontalAlignment="Left" x:Name="Project" VerticalAlignment="Top"  />

谢谢

0 个答案:

没有答案