【问题标题】:How do I conditionally change properties of controls in the CellTemplate of a data bound WPF ListView?如何有条件地更改数据绑定 WPF ListView 的 CellTemplate 中控件的属性?
【发布时间】: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>

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

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-24
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2010-12-14
        相关资源
        最近更新 更多