【发布时间】:2017-01-29 09:22:04
【问题描述】:
我正在尝试绑定到包含控件的 ViewModel 内的属性,但 WPF 似乎不允许我绑定到该属性。尝试这样做时,它会报告错误:Windows Presentation Foundation (WPF) 项目不支持 ViewModel。
我有什么方法可以使用 XAML 绑定到 ViewModel 中的属性,还是我必须在后面的代码中执行我的所有 ViewModel 修改?
主窗口 XAML:
<Window x:Class="MyNamespace.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MyNamespace"
mc:Ignorable="d"
Title="MainWindow">
<Grid>
<!-- Error: Can't bind to ViewModel.MyValue -->
<local:UserControl1 ViewModel.MyValue="123"/>
</Grid>
用户控制类:
public partial class UserControl1 :UserControl
{
public UserControl1()
{
InitializeComponent();
ViewModel = new UserControlViewModel();
}
public UserControlViewModel ViewModel
{
get
{
return (UserControlViewModel) GetValue(ViewModelProperty);
}
set
{
SetValue(ViewModelProperty, value);
}
}
public static readonly DependencyProperty ViewModelProperty = DependencyProperty.Register(nameof(ViewModel), typeof(UserControlViewModel), typeof(UserControl1), new PropertyMetadata(null));
}
用户控件的视图模型类:
public class UserControlViewModel
{
public string MyValue
{
get;
set;
}
}
【问题讨论】:
-
您无法访问 XAML 中的嵌套属性。
标签: wpf data-binding