从ItemsControl绑定到父DataTemplate属性
本文关键字:DataTemplate 属性 ItemsControl 绑定 | 更新日期: 2024-09-17 00:16:31
假设我有这个ViewModel和xaml:
class MyViewModel
{
public MyStringValue {get;set;} = "HelloWorld"
public IList<CustomObject> ChildViewModels{get;set;}
}
<DataTemplate DataType="{x:Type local:MyViewModel}">
<ItemsControl ItemsSource="{Binding ChildViewModels}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Path=MyStringValue,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType={x:Type local:MyViewModel}}}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
我一直收到以下错误消息:"找不到引用为"RelativeSource FindAncestor"的绑定的源…"所以基本上,我正在尝试绑定ItemsControl的parents属性容器,但似乎我做不到。
RelativeSource
AncestorType
是属于更高级别的视觉树(此处为ItemsControl
)。
由于MyStringValue
不是ItemsControl
的属性,因此也应该将Binding
Path
更改为点对视图模型(DataContext
):
{Binding Path=DataContext.MyStringValue,
RelativeSource={RelativeSource AncestorType=ItemsControl}}"