如何基于DataGrid绑定对象设置工具提示

时间:2014-12-30 12:42:03

标签: wpf xaml datatrigger

有一个标准DataGrid,其中每一行都是一个Invoice对象。

Invoice对象有一些布尔属性,如AAA,因此它对报告有影响 用户打算打印。

我想根据此布尔值更改PRINT按钮的ToolTip

我认为可以通过XAML和代码完成。

方法1。

<Button Content="Print" ToolTip="Not shown" ToolTipOpening="Button_ToolTipOpening"/>

方法2。我需要帮助......

 <DataGridTemplateColumn >
     <DataGridTemplateColumn.CellTemplate>
           <DataTemplate>
               <Button Width="19" Height="15"   Tag="{Binding Inv.Id}" 
                    Background="{DynamicResource ButtonLB}" Click="btnPrintInvoice_Click" Margin="5,0,0,0"    BorderBrush="#FF0565B8" Foreground="{DynamicResource CaptionBrush}" Name="btnPrintInvoice" >
    <Button.Style>
          <Style TargetType="{x:Type Button}">                                                             
     <Setter Property="UIElement.IsEnabled" Value="True" />
 <Style.Triggers>
           <DataTrigger  Binding="{Binding Path=IsAAA, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}, Mode=FindAncestor}}" Value="True">
           <Setter Property="StackPanel.ToolTip"
                    Value="{x:Static p:Resources.PrintInvoice}"
                           TargetName="self" />
          </DataTrigger>
        </Style.Triggers>
       </Style>
    </Button.Style>
  </Button>
 </DataTemplate>
 </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>

因此,如果IsAAA = true,则工具提示应为“A1”,反之亦然“A2”。

1 个答案:

答案 0 :(得分:2)

您可能需要为此编写一个转换器,当输入值为true时返回字符串值A1,如果输入为false,则返回A2。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if((bool)value == true)
      {
          return "A1";
      }
        else
      {
          return "A2";
      }
    }

然后将ToolTip内容绑定到IsAAA属性,并在绑定中指定转换器。