c# - 空工具提示问题

标签 c# wpf xaml data-binding tooltip

我有一个简单的 WPF 应用程序,它有一个按钮,其工具提示绑定(bind)到 TextBlock.Text:

<Grid>
    <Button Height="23" Margin="82,0,120,105" Name="button1" VerticalAlignment="Bottom" ToolTip="{Binding ElementName=textBlock1,Path=Text}" Click="button1_Click">Button</Button>
    <TextBlock Height="23" Margin="64,55,94,0" Name="textBlock1" VerticalAlignment="Top" Text="AD" />
</Grid>

在 button1_Click 中,我有:

textBlock1.Text = null;

我预计在单击按钮后没有工具提示。但是,我得到一个空的工具提示。我该如何解决这个问题?

最佳答案

您不能将 Text 设置为 null,它会立即变为空字符串。

解决方法#1:清除值的样式:

<!-- Do NOT set the ToolTip on the Button itself -->
<Style TargetType="Button" xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <Setter  Property="ToolTip" Value="{Binding ...}"/>
    <Style.Triggers>
        <DataTrigger Binding="{Binding ...}" Value="{x:Static sys:String.Empty}">
            <Setter Property="ToolTip" Value="{x:Null}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

解决方法 #2: 添加 ValueConverter如果 valueString.Empty,则返回 null 的绑定(bind)。

可能还有其他方法。

关于c# - 空工具提示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7346896/

相关文章:

c# - WPF 动画开始但显示太晚

wpf - 通过 FindName() 查找动态生成的 Wcf 控件

c# - UWP ListView 拖拽项目自定义UI

c# - UWP MediaElement 随机崩溃

c# - 如何为不同用户回复的一个电子邮件链获取通用 outlook mailitem ConversationID

c# - 线程与任务中的 ThreadStatic 属性

c# - LinearGradiantBrush 单独应用于下划线和文本,但不一起应用于

c# - 动态滚动到列表框中的焦点项目

c# - InitializeComponent() - 不明确的调用警告?

wpf - 数据绑定(bind)到 XAML 中的父数据上下文