如何有条件地更改数据绑定 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 - 如何选择以及何时进行数据绑定?