6

当我为单元格获得的值是某种类型时,我正在尝试设置一个触发器来显示一个文本块。

我已经成功地在同样的情况下显示了一张图片,但是在这种情况下我不想要一张图片,而是一些文字。

已注释掉行以进行测试。尝试使其工作。注释掉的代码有效!里面的文本块 text=xxx 没有。

这是我的尝试

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

3 回答 3

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>
于 2009-02-11T15:53:12.957 回答
1

杰出的 !谢谢大家:)

这就是我最终的结果。如果 PrecedenceIndicator =1,则显示 !,如果 PrecedenceIndicator =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>
于 2009-02-11T22:01:33.820 回答
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>
于 2009-02-11T07:22:26.897 回答