【问题标题】:WPF TriggersWPF 触发器
【发布时间】:2009-02-12 06:01:33
【问题描述】:

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

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

已注释掉行以进行测试。尝试使其工作。注释掉的代码有效!里面的textblock 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>

【问题讨论】:

  • 有人吃了你的代码 sn-p..
  • 是的,我不知道如何添加一个!?
  • 解决了,谢谢卡梅隆!
  • 哦,如果有人感兴趣,我正在尝试放置感叹号的文本表示而不是图像。
  • cablePrecedenceIndicatorImage 是在哪里定义的?

标签: wpf xaml datatrigger


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    太棒了!谢谢大家:)

    这就是我最终的结果。如果 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>
    

    【讨论】:

      【解决方案3】:

      您需要根据触发器将 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>
      

      【讨论】:

      • XML 命名空间“clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit”中不存在标记“DataGridTemplateColumn.Resources”
      • 关闭! “System.Windows.Controls.TextBlock”不是“Setter.Value”的有效值;不支持从 Visual 或 ContentElement 派生的值。
      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 2016-03-12
      • 2013-02-16
      • 2010-10-15
      • 2011-05-19
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多