我们正在尝试以正确的方式使用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" />
谢谢