Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Изменение цвета фона при клике на контейнер


Автор: softrix 13.12.2010, 00:58
Подскажите как можно убрать изменение цвета фона при клике на контейнер, к примеру:

Код

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <ListBox>
            <TextBox>123</TextBox>
        </ListBox>
    </Grid>
</Window>



При клике на тексбокс, синим выделяется целая строка, зачем это нужно и как от этого избавитья можно ?

Автор: Kaerus 13.12.2010, 17:21
вопрос не раз обсуждался (и здесь и на сторонних сайтах)
пару решений сходу
  • Если нужно просто вывести список элементов, без выделения можно использовать ItemsControl
  • Или если не используется ItemsSource & ItemTemplate, вообще подумать о StackPannel или DockPanel
  • Изменить цвет выделения на прозрачный (эдакий хак))
    Код

    <ListBox>
        <ListBox.Resources>
            <!-- override the system brushes so that selected items are transparent
                 whether the ListBox has focus or not -->
            <SolidColorBrush
                x:Key="{x:Static SystemColors.HighlightBrushKey}" 
                Color="Transparent" />
            <SolidColorBrush
                x:Key="{x:Static SystemColors.ControlBrushKey}" 
                Color="Transparent" />
            <SolidColorBrush
                x:Key="{x:Static SystemColors.HighlightTextBrushKey}" 
                Color="Black" />
        </ListBox.Resources>
        <!-- ... your items here ... -->
    </ListBox>
  • Изменить стиль ListBoxItem (в который оборачиваются все элементы в ListBox)
    Типа такого (взято http://vbcity.com/blogs/xtab/archive/2009/06/28/background-color-for-wpf-listbox-selected-item.aspx )
    Код

    <Style x:Key="SimpleListBoxItem"
            TargetType="ListBoxItem">
        <Setter Property="FocusVisualStyle"
                Value="{x:Null}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <Border Name="Border"
                            Padding="2"
                            SnapsToDevicePixels="true">
                        <ContentPresenter />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsSelected"
                                    Value="true">
                            <Setter TargetName="Border"
                                    Property="Background"
                                    Value="{StaticResource AuthorGradient}" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Автор: softrix 13.12.2010, 21:13
Спасибо помогло !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)