2010-04-04 2 views
1

Я использую Windows 7, и текущий выбор элемента (по умолчанию) заключается в том, чтобы нарисовать фон с синим кукурузным. Можно ли избавиться от этого и заменить его контуром 1px/границей над элементом списка, над которым мышь закончилась?Наличие контура для MouseOver для WPF ListView

Я в основном хочу нарисовать контур 1px/границу над любым элементом списка с шагом в 1 пиксель между элементом списка и контуром/границей.

Я использую WrapPanel с изображением в нем для каждого элемента.

ответ

4

Используйте ItemContainerStyle, чтобы переопределить фоновое поведение по умолчанию, и в вашем стиле используйте триггер на IsMouseOver, чтобы показать свою схему (например, с помощью Setter for BorderThickness).

EDIT: Грубый пример (не тестировался):

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate> 
      <Border Background="White" BorderThickness="5" Name="Bd"> 
      <Border.Style> 
       <Style TargetType="Border"> 
       <Setter Property="BorderBrush" Value="White" /> 
       </Style> 
      </Border.Style> 
      <ContentPresenter /> 
      </Border> 
      <ControlTemplate.Triggers> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter TargetName="Bd" Property="BorderBrush" Value="HotPink" /> 
      </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</ListBox.ItemContainerStyle> 
+0

Спасибо. Я очень новичок в WPF. Можете ли вы показать мне небольшой образец? Или, может быть, ссылка? –

+1

Грубый пример добавлен. Вам может потребоваться немного поэкспериментировать, чтобы получить точный эффект, который вы хотите, но, надеюсь, это поможет вам на правильном пути. – itowlson

+0

Спасибо, что я заменил ListBox на ListView, но он говорит перед компиляцией «Тип Setter не поддерживает прямой контент». –

Смежные вопросы