Элемент ListView По умолчанию выбирается с первым элементом в списке - PullRequest
2 голосов
/ 01 августа 2010

У меня есть WPF ListView, где я связываю наблюдаемую коллекцию, и ниже код

         <ListView Name="WOListView" IsSynchronizedWithCurrentItem="True" 
                          DataContext="{Binding  AllItems}" 
                          ItemsSource="{Binding }"
                          SnapsToDevicePixels="True"   Grid.IsSharedSizeScope="True" 
                          customEvents:DoubleClickEvent.HandleDoubleClick="true"
                          customEvents:DoubleClickEvent.TheCommandToRun="{Binding Path=ItemCommand}" 
                          BorderThickness="0" >

Здесь у меня есть две проблемы

1) Не знаю почему, я всегда получаюэлемент, выбранный при загрузке списка, и это всегда 1-й элемент в коллекции, которую я связываю.

2) Выбранный элемент обычно отображается синим цветом по умолчанию, но когда я щелкаю вне спискавместо отмены выбора item.it показывает выделенный элемент серым цветом

1 Ответ

2 голосов
/ 01 августа 2010

Для 1): Это связано с IsSynchronizedWithCurrentItem = "True". Если вы хотите использовать функцию IsSynchronizedWithCurrentItem, вероятно, вы хотите повлиять на CurrentItem. Для этого используйте следующий код ...

var dv = CollectionViewSource.GetDefaultView(yourObservableCollection);
dv.MoveCurrentTo( /* here your desired selection */ );

... см. здесь для получения дополнительной информации.

Для 2): это поведение по умолчанию ListView (и других ListControls). Если элемент управления списка больше не имеет фокуса, выделенные элементы отображаются серым цветом. Это делается для того, чтобы визуализировать, какой элемент управления имеет фокус (а какой нет).

Если вы все равно хотите изменить поведение выбора, поместите следующую разметку в ListView

<ListView.Resources>
    <Style TargetType="ListViewItem">
        <Style.Resources>
            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red"/>
            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green"/>
        </Style.Resources>
    </Style>
</ListView.Resources>

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

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