WPF TreeView выделяет строку при наведении курсора

В настоящее время при наведении указателя мыши на заголовок в TreeView заголовок выделяется. Я хотел бы навести указатель мыши на любую часть строки в TreeView, чтобы выделить всю строку (так же, как это делает проводник Windows). Может ли кто-нибудь привести пример того, как это сделать?

введите описание изображения здесь


person KrisTrip    schedule 03.05.2012    source источник
comment
возможный дубликат Выделить всю строку TreeViewItem в WPF   -  person Justin    schedule 21.11.2012


Ответы (1)


Вам нужно изменить ControlTemplate, чтобы TreeViewItem фактически составлял всю ширину элемента управления.

Обсуждение этой проблемы и решение есть здесь:

http://leecampbell.blogspot.com/2009/01/horizontal-stretch-on-treeviewitems.html

Здесь есть еще один длинный ответ, без обсуждения:

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b04f73e2-0b10-4d97-a6da-64df2e30c21d/

Поэтому я имел в виду, что эти примеры будут руководящими принципами. Если вы возьмете тот же код, что и во второй ссылке выше (с форумов MSDN), и просто добавьте это:

<Trigger Property="IsMouseOver" Value="True">
    <Setter Property="Background" TargetName="Bd"
            Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</Trigger>

к ControlTemplate, вы увидите, что при наведении курсора мыши вы выделяете цвет выделения. Очевидно, вам нужно настроить цвет и еще много чего, но это то, что вам нужно сделать - изменить ControlTemplate TreeViewItem так, чтобы он занимал всю ширину, и добавить Trigger вместо IsMouseOver.

person Tim    schedule 03.05.2012
comment
В этом примере заголовок просто увеличивается, а заголовок выделяется только при выборе. Я хочу выделить всю строку (включая кнопку развертывания и пустое пространство перед ней), и я хочу, чтобы выделение происходило при наведении курсора, а не при выборе. - person KrisTrip; 03.05.2012
comment
Я обновил свой ответ, чтобы предоставить дополнительную информацию. Это не совсем то, о чем вы просите (вам нужно будет настроить это), но это должно помочь вам. - person Tim; 03.05.2012
comment
Ссылка Ли Кэмпбелла и все обсуждение состоит только в том, чтобы растянуть выделение полностью вправо, а не влево. - person ; 12.04.2013