gpt4 book ai didi

c# - WPF 的 XAML : Hide ToolTip Popup when blank Tooltip text

转载 作者:行者123 更新时间:2023-11-30 16:06:26 24 4
gpt4 key购买 nike

我正在尝试在带有 Datagrid 的 WPF 窗体的单元格上设置工具提示。这行得通,但我不希望它在没有弹出文本可显示的单元格中弹出。

我在这里看到过类似的问题,但我无法让这些解决方案发挥作用。

这是 CellTemplate:

<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding itemType}" VerticalAlignment="Center">
<ToolTipService.ToolTip>
<TextBlock Text="{Binding toolTipText}" />
</ToolTipService.ToolTip>
</Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>

为了防止在空白的 toolTipText 上弹出,我添加了:

<DataGrid.Resources>
<Style x:Key="{x:Type ToolTip}" TargetType="{x:Type ToolTip}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToolTip}">
<Border Background="Black" Visibility="{TemplateBinding Content, Converter={StaticResource StringToVisibilityConverter}}" >
<TextBlock Width="50" FontFamily="Tahoma" FontSize="11" Text="{TemplateBinding Content}" Foreground="WhiteSmoke" Padding="2" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>

StringToVisibilityConverter 定义如下:

public class StringToVisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
var stringValue = String.Empty;
if (value is System.Windows.Controls.TextBlock) stringValue = (value as System.Windows.Controls.TextBlock).Text;
else stringValue = value as string;
return string.IsNullOrWhiteSpace(stringValue) ?
Visibility.Hidden : Visibility.Visible;
}

public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return value;
}
}

我看到的是,当文本为空白时,它不会弹出工具提示(好),但是当有文本时,它会弹出一个黑色矩形。
如果没有工具提示的样式设置,文本框会弹出 OK(除了空白文本也会弹出)。

当我删除

Background="Black"

在边框样式上,我没有看到任何弹出窗口。

最佳答案

您可以使用以下单元格模板使其更简单:

<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding itemType}" VerticalAlignment="Center">
<Image.ToolTip>
<ToolTip Visibility="{Binding toolTipText, Converter={StaticResource StringToVisibilityConverter}}">
<Border Background="Black" >
<TextBlock Text="{Binding toolTipText}" />
</Border>
</ToolTip>
<Image.ToolTip>
</Image>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>

转换器可以简化为:

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

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

关于c# - WPF 的 XAML : Hide ToolTip Popup when blank Tooltip text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32340160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com