gpt4 book ai didi

c# - 找不到引用 'RelativeSource FindAncestor' 的绑定(bind)源

转载 作者:行者123 更新时间:2023-12-03 07:56:07 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to hide wpf datagrid columns depending on a property

(5 个回答)


9年前关闭。




我收到此错误:

Cannot find source for binding with reference 'RelativeSource FindAncestor,
AncestorType='System.Windows.Controls.UserControl', AncestorLevel='1''
在此绑定(bind)上:
<DataGridTemplateColumn Visibility="{Binding DataContext.IsVisible,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}},
Converter={StaticResource BooleanToVisibilityConverter}}">
ViewModel坐在 DataContextUserControl . DataContextDataGrid (坐在 UserControl 中)是 ViewModel 内的属性(property), 在 ViewModel我有一个变量表示是否显示某一行,它的绑定(bind)失败,为什么?
这是我的属性(property):
private bool _isVisible=false;
public bool IsVisible
{
get { return _isVisible; }
set
{
_isVisible= value;
NotifyPropertyChanged("IsVisible");
}
}
功能方面: NotifyPropertyChanged PropertyChanged event null - 表示他未能注册绑定(bind)。
应该注意的是,我对 ViewModel 有更多的绑定(bind)。以这种有效的方式,这里有一个例子:
Command="{Binding DataContext.Cmd,
RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"

最佳答案

DataGridTemplateColumn不是可视树或逻辑树的一部分,因此没有绑定(bind)祖先(或任何祖先),因此 RelativeSource不起作用。
相反,您必须明确地为绑定(bind)提供源。

<UserControl.Resources>
<local:BindingProxy x:Key="proxy" Data="{Binding}" />
</UserControl.Resources>

<DataGridTemplateColumn Visibility="{Binding Data.IsVisible,
Source={StaticResource proxy},
Converter={StaticResource BooleanToVisibilityConverter}}">
和绑定(bind)代理。
public class BindingProxy : Freezable
{
protected override Freezable CreateInstanceCore()
{
return new BindingProxy();
}

public object Data
{
get { return (object)GetValue(DataProperty); }
set { SetValue(DataProperty, value); }
}

// Using a DependencyProperty as the backing store for Data.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty DataProperty =
DependencyProperty.Register("Data", typeof(object),
typeof(BindingProxy), new UIPropertyMetadata(null));
}
Credits .

关于c# - 找不到引用 'RelativeSource FindAncestor' 的绑定(bind)源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com