Хорошо ... Я новичок в WPF, но я вроде как знаю, как делать что-то с помощью DataTrigger и Converter.
Но то, что я хочу, кажется немного более сложным. Позвольте мне сообщить вам подробности:
DataContext для элемента управления ListView - это список объектов (object = Room). Это доступные номера. У меня есть еще один элемент управления (скажем, это TextBox), который привязан к одному из объектов Room, содержащихся в IList. Я хочу отображать изображение только для комнаты (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>
Я как бы застрял на этом. Есть идеи, как подойти к этому?





Вы можете написать MultiValueConverter, который возвращает видимость и принимает DataContext в качестве первого значения преобразователя, а конкретный объект «Комната» - в качестве второго значения (используйте привязку ElementName с Element как «Room») Если значения совпадают, отобразите элемент управления изображением, то есть привязку imgControl.Visibility к конвертеру.
Предполагая, что объект вашей комнаты содержит изображение или ссылку на изображение, вы можете использовать свойство SelectedIndex ListView и выполнить привязку к полю изображения.
<TextBox Name = "Room" Text = "{Binding ElementName=RoomsList.SelectedItem, Path=Picture}" />
Где Roomlist.Picture - фотография, которую вы хотите отобразить. Если это URL-адрес, вам, вероятно, придется сделать это, это тег изображения, содержащийся в текстовом поле. Обратите внимание, что я не тестировал этот код, поэтому его, возможно, придется немного подправить, чтобы заставить его работать.