You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF如何将ListView的ItemsSource项本身绑定到自定义控件依赖属性

解决方案:绑定整个数据项到自定义控件依赖属性

嘿,这个需求其实很容易实现!在WPF/UWP的DataTemplate里,每个项的DataContext本身就是你的Device对象,所以要把整个对象绑定到自定义控件的依赖属性,只需要用不带Path的Binding或者显式指定Path=.就可以了。

具体修改代码:

把你原来的绑定代码改成下面两种方式之一都可以:

<ListView x:Name="deviceView" ItemsSource="{Binding Devices}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <!-- 方式1:直接使用{Binding},默认绑定当前DataContext(也就是整个Device对象) -->
                <local:DeviceTile DeviceName="{Binding}"/>
                <!-- 方式2:显式指定Path=.,效果和上面完全一样 -->
                <!-- <local:DeviceTile DeviceName="{Binding Path=.}"/> -->
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

额外注意点:

  • 确保你的自定义控件DeviceTile的DeviceName依赖属性的类型是Device(而不是字符串),这样才能正确接收整个对象。如果把属性名改成CurrentDevice这类更贴合语义的名字会更合理,但只要类型匹配就没问题。
  • 这种绑定方式不仅适用于ListView,所有使用DataTemplate的控件(比如ItemsControl、GridView等)都适用,本质都是利用DataContext就是当前项这个特性。

内容的提问来源于stack exchange,提问作者MrWoffle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:39:08