2012-04-03 4 views
2

У меня есть представление списка следующим образом:Изменить цвет фона GridView строки в ListView

<ListView x:Name="lvLedger" 
       Height="{Binding Path=GridHight, ElementName=ledgerList}" 
       Width="{Binding Path=GridWidth, ElementName=ledgerList}" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       ItemsSource="{Binding}" 
       BorderThickness="0" 
       Background="Transparent" 
       BorderBrush="Transparent" 
       DataContextChanged="lvLedger_DataContextChanged"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn x:Name="c2ServiceDate" Header="Service Date" Width="82" > 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=servicedate}" 
           ToolTipService.ShowDuration="60000" 
           ToolTipService.InitialShowDelay="0" 
           ToolTip="{Binding Path=type}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
       </GridViewColumn> 
       <GridViewColumn x:Name="c3CPT" Header="Code" Width="50"> 
        <GridViewColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=cpt}" 
           ToolTipService.ShowDuration="60000" 
           ToolTipService.InitialShowDelay="0" 
           ToolTip="{Binding Path=type}" /> 
         </DataTemplate> 
        </GridViewColumn.CellTemplate> 
     <!--More columns here-->  </GridViewColumn></GridView></ListView.View></ListView> 

Что я хотел бы быть в состоянии сделать, это изменить цвет фона строки на основе комбинации Дата и код службы. Таким образом, у меня может быть 3 строки подряд с одинаковой датой и кодом службы, которые должны иметь тот же фон, за которым следуют 2 строки с другим цветом, а затем чередуются по тому же правилу

1/19/11 356 (синий)
1/19/11 356 (синий)
1/19/11 235 (красный)
2/20/11 356 (синий)
2/20/11 356 (синий)
2/20/11 356 (синий)
2/21/11 564 (красный)
2/21/11 564 (красный)
2/21/11 564 (красный)
2/21/11 564 (красный)
2/25/11 798 (синий)
и Су на ...

ItemSource в настоящее время ограничен к DataView от внешнего контроля.

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

ответ

2

Как добавить свойство ColorProperty к классу/модели, к которой привязана ваша строка (строка). Тогда там у вас уже есть даты и цифры. После того, как вы их установили, установите цвет также, теперь без конвертеров, вы можете просто запустить по этому свойству:

<Style x:Key="ListViewItemStyle" TargetType="ListViewItem"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
        <Border x:Name="Border" SnapsToDevicePixels="true"> 
         <GridViewRowPresenter VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/> 
         <Border.Style> 
          <Style TargetType="Border"> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ColorProperty}" Value="Blue"> 
             <Setter Property="Background" Value="Blue"/> 
            </DataTrigger> 
            <DataTrigger Binding="{Binding ColorProperty}" Value="Red"> 
             <Setter Property="Background" Value="Red"/> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Border.Style> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

Это приблизило меня к тому, где я должен был быть. Поскольку у меня уже был набор стилей для