Wpf 绑定到ItemsControl中的依赖项属性

Wpf 绑定到ItemsControl中的依赖项属性,wpf,dependency-properties,xaml-binding,Wpf,Dependency Properties,Xaml Binding,我有一个带有内联ItemsSource的ItemsControl,如下所示(简化): 并在数据上下文中传递: <UserControlName DataContext="{Binding Container.APresenter}"/> 但是,绑定无法定位源 System.Windows.Data错误:2:找不到管理框架元素或 目标元素的FrameworkContentElement。 BindingExpression:Path=Removed;DataItem=null;

我有一个带有内联ItemsSource的ItemsControl,如下所示(简化):

并在数据上下文中传递:

<UserControlName DataContext="{Binding Container.APresenter}"/>

但是,绑定无法定位源

System.Windows.Data错误:2:找不到管理框架元素或 目标元素的FrameworkContentElement。 BindingExpression:Path=Removed;DataItem=null; 目标元素是“KeyData”(HashCode=4638229); 目标属性为“Count”(类型为“Nullable`1”)


我认为这就是依赖性属性的要点——处理这样的情况?有人能指出我误解的部分吗?

绑定不知道谁拥有
Count1
Count2
。请提供一个
ElementName
,它引用了所讨论的对象。然后可能会关闭其
DataContext
,例如此绑定:

="{Binding ElementName=PathBox, Path=DataContext.Count1}"
我发现,命名Xaml元素(甚至页面)然后将该命名对象的路径传递到其内部,或者通过其datacontext将其作为控件,可以解决大多数绑定问题

更新 有时必须访问命名项。在这种情况下,根据对象使用x:name对其命名,然后访问它

="{Binding Source={x:Reference PathBox} , Path=Count1}">

因此,最终的解决方案

忽略一个显而易见的事实,即我最初错过了一个数据上下文,在那之后,挑战似乎在于让数组中的项意识到外部ItemsControl的数据上下文

我试着引用
ElementName
RelativeSource
——这两个似乎都找不到。我试着在UserControl上加一个
x:Name
,并按照OmegaMan在回答中的建议,使用
x:reference
进行引用

所有这些都没有达到预期的效果——我能找到的唯一有效的解决方案是使用a,如本答案后半部分所述


此后,我将数组项重构为一个单独的用户控件,从而简化了绑定。

您希望哪个对象成为
Count1
Count2
绑定的源?您必须设置这两个绑定的Source或RelativeSource或ElementName,因为数组中没有继承DataContext。对不起,这是什么意思?Count1将是APresenter上的int。是的,但您没有将APresenter实例放入任何DataContext中,只放入设计时DataContext中。但即使您这样做了,DataContext也不会被继承到数组中的元素中。@Clemens-我相信我在创建控件时设置了DataContext?我会更新我的问题。那么,有没有一种方法可以让数组中的元素指向它呢?你的问题已经有了答案…谢谢,对不起,我一直在尝试从中得到一些东西。如果我将datacontext设置为问题中的值,那么它是否只能在UserControl元素上访问?我似乎无法给它起个名字,因为(我想)-但同样,我似乎也无法通过RelativeSource找到它…嗯,不,没关系,我的数据上下文必须设置好,因为我正在访问另一个文本块。但是我似乎根本无法从数组项访问它…@Chris如果您已命名UserControl,请尝试使用
Count1
而不是
DataContext.Count1
,因为在这种情况下,假定了DataContext。不,这似乎也不起作用。我似乎无法命名我的UserControl(可能是名称空间冲突?),但是有一个stackpanel包装这个ItemsControl,我可以看到它确实有来自其他绑定的数据上下文。但我似乎无法从数组中获得这些信息,无论是出于爱还是金钱…@CHris你能将你的数据数组从控制中移到页面的资源中吗?
<UserControlName DataContext="{Binding Container.APresenter}"/>
="{Binding ElementName=PathBox, Path=DataContext.Count1}"
="{Binding Source={x:Reference PathBox} , Path=Count1}">