2012-11-01 31 views
0
<DataGrid x:Name="dgRecords1" 
      CanUserAddRows="False" IsReadOnly="True" 
      ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}" 
      Style="{DynamicResource StyleDatagrid}" 
      SelectionChanged="dgRecords1_SelectionChanged" 
      Height="251" Width="569" Margin="41,173,168,0"> 
    <DataGrid.RowStyle> 
    <Style TargetType="DataGridRow"> 
     <Setter Property="ToolTip"> 
     <Setter.Value> 
      <Border Width="200" Height="80" 
        BorderBrush="Black" BorderThickness="1" 
        Background="AliceBlue"> 
      <StackPanel Orientation="Vertical"> 
       <StackPanel Height="30" Background="Black"> 
       <TextBlock Text="Email Sent To" 
          FontSize="14" FontWeight="Bold" Foreground="White"/> 
       </StackPanel> 
       <StackPanel> 
       <TextBlock Text="{Binding SentToList}" 
          TextWrapping="Wrap" FontWeight="Bold"/> 
       </StackPanel> 
      </StackPanel> 
      </Border> 
     </Setter.Value> 
     </Setter> 
    </Style> 
    </DataGrid.RowStyle> 

在上面的代碼,如何將工具提示的可見性綁定到文本塊中的文本?

<TextBlock TextWrapping="Wrap" FontWeight="Bold" Text="{Binding SentToList}" /> 

我要檢查是否有東西在這個文本塊,如果有什麼,我需要做的提示不可見。有使用觸發器的方法嗎?

回答

5

您可以通過工具提示控件圍繞您的邊框,並通過使用從字符串轉換爲可見性的binding converter將該控件的可見性綁定到相同的SentToList屬性。

<Style TargetType="DataGridRow"> 
    <Style.Resources> 
     <local:StringToVisibilityConverter x:Key="StringToVisibilityConverter"/> 
    </Style.Resources> 
    <Setter Property="ToolTip"> 
     <Setter.Value> 
      <ToolTip Visibility="{Binding SentToList, Converter={StaticResource StringToVisibilityConverter}}"> 
       <Border> 
        ... 
       </Border> 
      </ToolTip> 
     </Setter.Value> 
    </Setter> 
</Style> 

轉換器可能是這樣的:

public class StringToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.IsNullOrWhiteSpace(value as string) ? Visibility.Collapsed : Visibility.Visible; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

它工作正常,但仍有一小灰矩形框彈出,如果有一個空字符串。 – sony

+0

查看編輯答案。我用ToolTip控件包圍了Border(它成爲默認ToolTip的內容),它替換了默認的ToolTip。 – Clemens

+0

優秀!!!感謝百萬 – sony

相關問題