WPF: как выбрать родительский список, если пользователь нажал на дочерний список - PullRequest
1 голос
/ 17 февраля 2010

В моем приложении, используя механизм DataTemplate, я вставляю в элемент ListBox еще один список. Но возможно ли, что когда выбран один элемент списка в родительском списке, фокус может быть на дочернем элементе другого родительского списка (см. Рисунок)

Pic

Как это сделать: если один из дочерних списков в фокусе (один элемент из них выделен), то родительский элемент списка выбирается? Использование связывания или шаблонов

<DataTemplate x:Key="NotesListBoxDataTemplate" DataType="Note">
    <StackPanel Orientation="Vertical">

        <StackPanel Orientation="Horizontal">
            <TextBox Text="{Binding Path=Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>
            <my:DatePicker Height="25" Name="datePicker1" Width="115" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
                           SelectedDate="{Binding LastEdit,
                                                  Mode = TwoWay}" />
        </StackPanel>
        <TextBox Text="{Binding Path=Content, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"></TextBox>

        <StackPanel Orientation="Horizontal">
            <ListBox Name="ImagesListBox"  SelectedIndex="{Binding Mode=OneWayToSource, Source={StaticResource progParameters}, Path=SelectedImage, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=Images}" ItemTemplate="{StaticResource NotesListBoxImagesTemplate}" Style="{StaticResource HorizontalListBox}">
            </ListBox>
            <StackPanel Orientation="Vertical">
                <Button Name="AddImageButon" Content="+" Click="AddImageButon_Click"></Button>
                <Button Name="RemoveImageButon" Content="-" Click="RemoveImageButon_Click"></Button>
            </StackPanel>

        </StackPanel>

    </StackPanel>
</DataTemplate>

1 Ответ

3 голосов
/ 14 апреля 2010

На родительском ListBox установите для свойства IsSynchronizedWithCurrentItem значение true, затем для внутреннего ListBox es установите для свойства SelectedItem значение "{Binding SelectedItem ElementName=lbParent}".

Подумайте об использовании конвертера , чтобы помочь вам получить конкретные данные, которые недоступны через xaml или если вам необходимо выполнить некоторые вычисления.

Надеюсь, это поможет.

...