DataTriggers в Expression Blend - PullRequest
       15

DataTriggers в Expression Blend

0 голосов
/ 01 марта 2010

У меня есть список, в котором отображаются элементы отгрузки (пользовательский класс), отформатированные с использованием таблицы данных (см. Ниже). В шаблоне есть элемент границы (я называю его драгоценным камнем), который отображает, какой элемент активен (не выбран), который будет элементом, к которому будут добавляться продукты.

template.png

В классе отгрузки (Active) есть логическое свойство, которое задается в обработчике события щелчка для элемента Gem. Обычно камень должен быть темным, как на первом изображении, а затем светиться, когда активен.

У меня установлен DataTrigger в DataTemplate для обработки изменения цвета Gem.

    <DataTemplate.Triggers>
 <DataTrigger Binding="{Binding Active}" Value="True">
  <Setter TargetName="ActiveGem" Property="Background">
   <Setter.Value>
    <RadialGradientBrush>
     <GradientStop Color="Red" Offset="0"/>
     <GradientStop Color="#FF820000" Offset="1"/>
    </RadialGradientBrush>
   </Setter.Value>
  </Setter>
 </DataTrigger>
 <DataTrigger Binding="{Binding Active}" Value="False">
  <Setter TargetName="ActiveGem" Property="Background">
   <Setter.Value>
    <RadialGradientBrush>
     <GradientStop Color="Red" Offset="0"/>
     <GradientStop Color="#FF820000" Offset="1"/>
    </RadialGradientBrush>
   </Setter.Value>
  </Setter> 
 </DataTrigger>
</DataTemplate.Triggers>

Однако по какой-то причине, когда приложение загружается, все гемы горят, показывая, что все пакеты активны.

** Из-за ограничений репутации на stackOverflow я не могу публиковать больше гиперссылок. Изображение ниже находится в том же домене, что и выше.

/ ExternalImages / ActiveItems.PNG

Я проверил, что все элементы на самом деле Активны = Ложь, но камень всегда горит. Кроме того, когда я запускаю событие click, я просматриваю коллекцию Package и устанавливаю все Active = False, а затем устанавливаю TemplatedParent отправителя активным.

    Dim ActiveShipments = From ship In ShipmentData _
                         Where ship.Active = True
    For Each MyShipment As Shipment In ActiveShipments
        MyShipment.Active = False
    Next
    Dim Gem As Border = sender
    Dim ShipmentObject As ContentPresenter = Gem.TemplatedParent
    ShipmentObject.Content.Active = True

Драгоценные камни не возвращаются в свое неосвещенное состояние (которым они никогда не были в первую очередь). Они только остаются освещенными. Есть идеи?

Cory

- Как ни странно, в поле с кодом появилось только первое редактирование ... Исправлено.

1 Ответ

0 голосов
/ 02 марта 2010

На самом деле, я понял это. Когда я делал RadialGradiantBrushes, я либо не сохранял неосвещенный, либо копировал / вставлял подсвеченный на него и не редактировал его или что-то еще. Генератор данных стрелял правильно, но, поскольку оба градиента были освещены, казалось, что ничего не происходит. Извините за беспокойство!

Cory

...