2010-08-13 2 views
1

У меня есть ListView, с ListView.View как GridView.Триггер в WPF не работает

По умолчанию, mouseOver работает, ListViewItem выделяется при наведении курсора мыши и выбирается, когда я нажимаю на него. Но после того, как я изменил ControlTemplate, я получаю шаблон, который я хочу, но подсветка и выбор не исчез.

Я использую триггер, но он не работает.

Вот мой код.

<Style x:Key="filesListViewItemStyle" TargetType="{x:Type ListViewItem}"> 
      <Setter Property="IsSelected" Value="{Binding FileIsSelected}"/> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="ListViewItem"> 
         <Grid Height="40"> 
          <GridViewRowPresenter/> 
          <Line X1="0.0" Y1="0.0" X2="{Binding ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListView}}}" Y2="0.0" StrokeThickness="1" StrokeDashArray="2" Stroke="Gray" /> 
         </Grid> 
         <ControlTemplate.Triggers> 
          <Trigger Property="IsMouseOver" Value="True"> 
           <Setter Property="Background" Value="Green"/> 
          </Trigger> 
         </ControlTemplate.Triggers> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

В моем шаблоне, я фактически добавил строку в качестве разделителя между 2 рядами ListViewItem.

Я просто не понимаю, почему триггер не работает!

+0

Пожалуйста, проверьте, не установлен ли по умолчанию ControlTemplate для ListViewItem, если вы ничего не пропустили. Или вы можете взять это как базу и настроить ее по своему вкусу. Обычно я стараюсь избегать замены ControlTemplates (если это абсолютно необходимо), потому что я не уверен, что понимаю все тонкости. – Gishu

ответ

2

Свойство Background элемента управления используется только в ControlTemplate. Вы заменили шаблон на тот, который не использует Background, поэтому настройка свойства не влияет. Вы можете использовать {TemplateBinding Background} для привязки свойств к Фон элемента управления. Возможно, вы хотите связать с ним фон сетки:

<ControlTemplate TargetType="ListViewItem"> 
    <Grid Height="40" Background="{TemplateBinding Background}"> 
     <GridViewRowPresenter/> 
+1

Это работает !!! Благодаря!!! 1 строка кода разрешила мои 12 часов несчастным! – VHanded

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