Как я могу условно изменить свойства элементов управления в CellTemplate связанного с данными WPF ListView? - PullRequest
2 голосов
/ 19 ноября 2008

Хорошо ... Я новичок в WPF, но я вроде знаю, как делать что-то, используя DataTriggers и Converters.

Но то, что я хочу, кажется немного более сложным, чем это. Позвольте мне дать вам подробную информацию:

DataContext для элемента управления ListView представляет собой IList объектов (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>

Я застрял на этом. Есть идеи, как к этому подойти?

Ответы [ 2 ]

1 голос
/ 19 ноября 2008

Вы можете написать MultiValueConverter, который возвращает видимость обратно и принимает DataContext в качестве первого значения преобразователя и конкретный объект 'Room' в качестве второго значения (используйте привязку ElementName с Element в качестве 'Room') Если значения совпадают, отобразите элемент управления Image, то есть привязку imgControl.Visibility к конвертеру

0 голосов
/ 19 ноября 2008

Предполагая, что объект вашей комнаты содержит изображение или ссылку на изображение, вы можете использовать свойство SelectedIndex ListView и привязать его к полю изображения.

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

Где Roomlist.Picture - это фотография, которую вы хотите отобразить. Если это URL, вам, вероятно, придется сделать это тег изображения, содержащийся в текстовом поле. Обратите внимание, что я не тестировал этот код, поэтому его, возможно, придется немного подправить, чтобы он заработал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...