当ListBox源项嵌入到XAML中时,RelativeSource绑定不起作用的原因可能是由于数据上下文的改变导致的。RelativeSource绑定是一种相对于其他元素或者父元素的绑定方式,它依赖于元素树的结构。但是当ListBox源项嵌入到XAML中时,可能会改变元素树的结构,导致RelativeSource绑定无法找到目标元素。
解决这个问题的方法有两种:
<ListBox x:Name="myListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Property, ElementName=myListBox}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这样就可以通过ElementName绑定来获取ListBox的属性。
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Property, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这样就可以通过FindAncestor绑定来找到ListBox的父元素,并进行属性绑定。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云