2009-02-11 10 views
6

Estoy tratando de configurar un disparador para mostrar un bloque de texto cuando el valor que obtengo para la celda es de un tipo determinado.WPF Triggers

He logrado mostrar una imagen en la misma situación, pero en esta circunstancia no quiero una imagen, pero algo de texto.

Han comentado líneas para probar.tratar de hacerlo funcionar. ¡El código comentado funciona! El textblock text = xxx dentro de él, no.

Este es mi intento (s)

<wpfToolkit:DataGridTemplateColumn Header="P" Width="20"> 
    <wpfToolkit:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <!-- <DataTemplate.Triggers> --> 
      <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> --> 
      <TextBlock Text="XXX" /> 
      <!-- </DataTrigger> --> 
      <!-- <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> --> 
      <!-- <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> --> 
      <!-- </DataTrigger> --> 
      <!-- </DataTemplate.Triggers> --> 
     </DataTemplate> 
    </wpfToolkit:DataGridTemplateColumn.CellTemplate> 
</wpfToolkit:DataGridTemplateColumn> 
+0

Alguien comió su fragmento de código .. – Gishu

+0

Sí, no sé cómo agregar uno!? – mike

+0

funcionó, gracias Cameron! – mike

Respuesta

4

Establecer el contenido de la DataTemplate a TextBlock y establecer la visibilidad basada en el gatillo. No estoy seguro de lo que el segundo es para DataTrigger porque se refiere a un nombre de destino que no existe en el ámbito actual, así que no sé cómo esto encaja.

<DataTemplate> 
    <TextBlock x:Name="block" Text="XXX" Visibility="Collapsed"/> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
      <Setter TargetName="block" Property="Visibility" Value="Visible"/> 
     </DataTrigger> 
     <!--<DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
      <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> 
     </DataTrigger>--> 
    </DataTemplate.Triggers> 
</DataTemplate> 
+0

¡Increíble, gracias! ¡Vea mi 'respuesta' en la parte inferior! – mike

0

Es necesario cambiar el tipo de la DataTemplate, basado en su disparador, a partir de una imagen en un cuadro de texto.

<DataTemplate> 
    <ContentPresenter x:Name="Presenter" /> 

    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
      <Setter TargetName="Presenter" Property="Content"> 
       <Setter.Value> 
        <TextBlock Text="XXX" /> 
       </Setter.Value> 
      </Setter> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
      <Setter TargetName="cablePrecedenceIndicatorImage" Property="Source" Value="Resources\Images\small_exclamation_mark.png"/> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 
+0

La etiqueta 'DataGridTemplateColumn.Resources' no existe en el espacio de nombres XML 'clr-namespace: Microsoft.Windows.Controls; assembly = WPFToolkit' – mike

+0

close! 'System.Windows.Controls.TextBlock' no es un valor válido para 'Setter.Value'; los valores derivados de Visual o ContentElement no son compatibles. – mike

1

Brilliant! Gracias montones :)

Esto es lo que terminé con. Si PrecedenceIndicator = 1, display!, Si PrecendenceIndicator = 2, display !!.

<wpfToolkit:DataGridTemplateColumn Header="A" Width="20"> 
    <wpfToolkit:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock> 
       <TextBlock x:Name="block1" Text="&#x21;" Visibility="Collapsed"/> 
       <TextBlock x:Name="block2" Text="&#x21; &#x21;" Visibility="Collapsed"/> 
      </TextBlock> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="1"> 
        <Setter TargetName="block1" Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding PrecedenceIndicator}" Value="2"> 
        <Setter TargetName="block2" Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 
    </wpfToolkit:DataGridTemplateColumn.CellTemplate> 
</wpfToolkit:DataGridTemplateColumn> 
+0

¡Luce increíble! Me alegro de que funcionó. –

Cuestiones relacionadas