【发布时间】:2010-12-27 16:08:38
【问题描述】:
我有以下简单代码:
<Window x:Class="WpfApplication3.MainWindow"
x:Name="WindowInst" …>
<local:UserControl1/>
</Window>
<UserControl x:Class="WpfApplication3.UserControl1" …>
<Button Content="Click me"
Command="{Binding DataContext.ButtonClickedCommand,
ElementName=WindowInst}" Height="134" Width="314" />
</UserControl>
在窗口的 ViewModel 中我有 ButtonClickedCommand:
#region Avatar click command
RelayCommand _buttonClickedCommand;
public ICommand ButtonClickedCommand
{
get
{
if (_buttonClickedCommand == null)
{
_buttonClickedCommand = new RelayCommand(() => this.ButtonClicked());
}
return _buttonClickedCommand;
}
}
public void ButtonClicked()
{
}
#endregion
不幸的是,它在运行时导致异常:
System.Windows.Data 错误:4:找不到引用“ElementName=WindowInst”的绑定源。 BindingExpression:Path=DataContext.ButtonClickedCommand;数据项=空;目标元素是 'Button' (Name='');目标属性是“Command”(输入“ICommand”)
你能解释一下它有什么问题吗?
【问题讨论】:
-
你能显示你设置 DataContext 的位置吗?
-
比如在窗口中DataContext="{Binding ViewModel, ElementName=WindowInst}"