如何有条件地更改数据绑定 WPF ListView 的 CellTemplate 中控件的属性?

Posted

技术标签:

【中文标题】如何有条件地更改数据绑定 WPF ListView 的 CellTemplate 中控件的属性?【英文标题】:How do I conditionally change properties of controls in the CellTemplate of a data bound WPF ListView? 【发布时间】:2008-11-19 01:27:37 【问题描述】:

好的...我是 WPF 新手,但我知道如何使用 DataTriggers 和 Converters 来做事。

但是,我想要的似乎比这更复杂一些。让我告诉你细节:

ListView 控件的 DataContext 是一个 IList 对象 (object=Room)。这些是可用的房间。我有另一个控件(假设它是一个 TextBox),它绑定到 IList 中包含的 Room 对象之一。我只想为绑定到另一个控件的房间 (ListViewItem) 显示图像。

这是我的一些 XAML:

<TextBox Name="Room" />
<ListView Name="RoomsList" SelectionMode="Single">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="32">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <!-- 
                           Here's where I want to change the Source property
                           depending on whether or not the item matches the
                           TextBox DataContext.
                        -->
                        <Image Source="Images/Check.png" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Header="Room Name" Width="150" HeaderContainerStyle="StaticResource textHeaderStyle" 
                DisplayMemberBinding="Binding Path=RoomName" />
        </GridView>
    </ListView.View>
</ListView>

我有点坚持这个。关于如何解决这个问题的任何想法?

【问题讨论】:

【参考方案1】:

您可以编写一个 MultiValueConverter,它返回 Visibility,并将 DataContext 作为第一个转换器值,将特定的“房间”对象作为第二个值(使用 ElementName 与 Element 绑定作为“房间”) 如果值匹配,则显示图像控件,即 imgControl.Visibility 绑定到转换器

【讨论】:

【参考方案2】:

假设您的房间对象包含图片或图片链接,您可以使用 ListView 的 SelectedIndex 属性并绑定到图片字段。

<TextBox Name="Room" Text="Binding ElementName=RoomsList.SelectedItem, Path=Picture" />

其中 Roomlist.Picture 是您要显示的照片。如果它是一个 URL,您可能必须这样做是一个包含在文本框中的图像标记。请注意,我尚未测试此代码,因此可能需要对其进行一些调整才能使其正常工作。

【讨论】:

以上是关于如何有条件地更改数据绑定 WPF ListView 的 CellTemplate 中控件的属性?的主要内容,如果未能解决你的问题,请参考以下文章

2022-03-23 WPF面试题 ListBox 与 ListView - 如何选择以及何时进行数据绑定?

2022-03-23 WPF面试题 ListBox 与 ListView - 如何选择以及何时进行数据绑定?

Winform 绑定ListView控件

WPF如何获得ListView内各单元格控件

如何有条件地隐藏部分 WPF 控件?

在WPF中插入了一个ListView表格,在SQL中建了一个表,如何实现绑定?