2009-02-11 218 views
6

我想设置一个触发器来显示一个文本块,当我得到的单元格的值是某种类型。WPF触发器

我已经成功地设法在相同的情况下显示图像,但在这种情况下我不想要图像,但是需要一些文本。

已经注释掉了行以便test.try使其工作。注释掉的代码有效!其中的textblock text = xxx,不是。

这是我尝试(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

有人吃了你的代码片段.. – Gishu 2009-02-11 06:42:32

+0

是的,我想不出如何添加一个!? – mike 2009-02-11 06:47:16

+0

解决了,谢谢卡梅隆! – mike 2009-02-11 07:10:24

回答

4

将DataTemplate的内容设置为TextBlock并根据触发器设置可见性。我不知道什么是第二DataTrigger是因为它指的是没有在当前范围存在的目标名称,所以我不知道如何结合使用。

<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

您需要更改的DataTemplate的类型,根据您的触发,从图像到一个文本框。

<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> 
1

辉煌!谢谢堆:)

这就是我最终与。如果PrecedenceIndicator = 1,则显示!,如果PrecendenceIndicator = 2,则显示!!

<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>