我遇到了这个错误:
Cannot find source for binding with reference 'RelativeSource FindAncestor,
AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''
关于绑定:
<DataGridTemplateColumn Visibility="{Binding DataContext.IsVisible,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
Converter={StaticResource BooleanToVisibilityConverter}}">
ViewModel
作为UserControl
中的DataContext
。DataGrid
(坐落在UserControl
中)的DataContext
是ViewModel
中的一个属性,在ViewModel
中,我有一个变量来判断是否显示某一行,但它的绑定失败了,为什么呢?这是我的属性:
private bool _isVisible=false;
public bool IsVisible
{
get { return _isVisible; }
set
{
_isVisible= value;
NotifyPropertyChanged("IsVisible");
}
}
谈到函数:NotifyPropertyChanged
,PropertyChanged
事件为null表示未成功注册绑定。
需要注意的是,我对ViewModel
进行了更多的绑定,它们按照这种方式工作,以下是一个示例:
Command="{Binding DataContext.Cmd,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
ElementName="whatevs"
并避免这种重定向。 - user1228TriggerAction
中定义ContextMenu
的情况下的解决方案 - 请参见https://stackoverflow.com/questions/54415381/in-mvvm-open-context-menu-upon-drag-completion。 - Informagic