2009-09-28 17 views
1

Представьте меня есть связанный ListView данных и в <ControlTemplate.Triggers>Использование стилей в Windows Presentation Foundation

У меня есть следующие

<DataTrigger Binding="{Binding Path=Status}" Value="Completed"> 
    <Setter Property="Background" Value="{StaticResource CompletedBackground}" /> 
    <Setter Property="Foreground" Value="Black" /> 
</DataTrigger> 

Я хочу, чтобы быть привязан к стилю я имею в моей сетке. Ресурсы, которые выглядят следующим образом:

<Style x:Key="CompletedBackground" TargetType="ListViewItem"> 
    <Setter> 
     <Setter.Value> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FFBCFAA6" Offset="0"/> 
       <GradientStop Color="#FFA3E88B" Offset="1"/> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
</Style> 

Однако, как вы можете себе представить, это не работает, Suprise сярприз, вы не можете связать «сеттер» на «фон», так что мой Questio n, как я действительно решаю проблему?

Я просмотрел следующее много раз, не могу найти никакой информации here.

+0

Вы пытались использовать DynamicResource вместо StaticResource? – japf

ответ

2

То, что вы пытаетесь сделать, в корне ошибочно. Во-первых, ваш установщик стиля не указывает целевое свойство. Предположительно, целевое свойство должно быть Background:

<Style x:Key="CompletedBackground" TargetType="ListViewItem"> 
    <Setter Property="Background"> 
     <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FFBCFAA6" Offset="0"/> 
         <GradientStop Color="#FFA3E88B" Offset="1"/> 
       </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
</Style> 

Во-вторых, вы тогда пытаетесь присвоить Style экземпляр к Background имущества, которое имеет тип Brush, не Style.

В зависимости от того, что вы пытаетесь достичь, вы должны быть в состоянии просто изменить Style к Brush ресурса:

<LinearGradientBrush x:Key="CompletedBackground" EndPoint="0.5,1" StartPoint="0.5,0"> 
    <GradientStop Color="#FFBCFAA6" Offset="0"/> 
    <GradientStop Color="#FFA3E88B" Offset="1"/> 
</LinearGradientBrush> 

Затем используйте его из триггера таким же образом вы уже являетесь.

+0

Быстрый ответ Кент :). Я не могу сделать это быстрее вас :)). Также я думаю, что Filip ссылается на стиль, который определяется внутри логического дерева шаблона шаблона. Вероятно, стоит упомянуть, чтобы определить его внутри ... Не в сетке. Приветствия. – Anvaka

+0

Я хочу, чтобы он был доступен по всему миру всеми моими списками ListView, поэтому не только в этом контрольном шаблоне. Спасибо –

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