首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

带有DataTemplates的WPF ListBoxItems - 如何从DataTemplate中引用绑定到ListBoxItem的CLR对象?

在WPF中,要从DataTemplate中引用绑定到ListBoxItem的CLR对象,可以使用FindAncestor方法来查找祖先元素,然后使用TemplateBinding来绑定到该元素的属性。

以下是一个示例:

代码语言:xaml
复制
<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属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《深入浅出WPF》——模板学习

图形用户界面(GUI,Graphic User Interface)应用较之控制台界面(CUI,Command User Interface)应用程序最大的好处就是界面友好、数据显示直观。CUI程序中数据只能以文本的形式线性显示,GUI程序则允许数据以文本、列表、图形等多种形式立体显示。 用户体验在GUI程序设计中起着举足轻重的作用——用户界面设计成什么样子看上去才够漂亮?控件如何安排才简单易用并且少犯错误?(控件并不是越复杂越好)这些都是设计师需要考虑的问题。WPF系统不但支持传统Windows Forms(简称WinForm)编程的用户界面和用户体验设计,更支持使用专门的设计工具Microsoft Expression Blend进行专业设计,同时还推出了以模板为核心的新一代设计理念(这是2010年左右的书,在那时是新理念,放现在较传统.NET开发也还行,不属于落后的技术)。 本章我们就一同来领略WPF强大的模板功能的风采。

01
领券