在WPF中,要从DataTemplate中引用绑定到ListBoxItem的CLR对象,可以使用FindAncestor
方法来查找祖先元素,然后使用TemplateBinding
来绑定到该元素的属性。
以下是一个示例:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
<Button Content="Click me" Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}}" CommandParameter="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在这个示例中,我们在DataTemplate中添加了一个Button,并使用FindAncestor
方法查找祖先元素ListBox。然后,我们使用TemplateBinding
将Command绑定到ListBox的DataContext中的MyCommand属性,并将CommandParameter绑定到当前的ListBoxItem。
这样,当用户点击按钮时,就会执行MyCommand方法,并将当前ListBoxItem的CLR对象作为参数传递给该方法。
需要注意的是,在使用FindAncestor
方法时,必须指定AncestorType属性,以便查找到正确的祖先元素。在这个示例中,我们使用了x:Type ListBox
来指定AncestorType属性。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云