工具提示可见性

时间:2010-07-31 23:32:22

标签: silverlight tooltip

我有以下代码:

<DataTemplate>
    <!--<sdk:DataGridTextColumn Binding="{Binding Description}" Header="Description" Width="205" />-->
    <TextBlock  Text="{Binding Description}"    Width="232">
        <ToolTipService.ToolTip  >   
            <ToolTip Visibility="{Binding    }">
                <sdk:DataGrid AutoGenerateColumns="False" GridLinesVisibility="None" HeadersVisibility="None" Height="Auto" ItemsSource="{Binding Contains}" >
                    <sdk:DataGrid.Columns>
                        <sdk:DataGridTextColumn Binding="{Binding Code}" Header="Code" CanUserSort="False" />
                        <sdk:DataGridTextColumn Binding="{Binding Description}" Header="Description" CanUserSort="False"/> 
                    </sdk:DataGrid.Columns>
                </sdk:DataGrid>            
            </ToolTip>
        </ToolTipService.ToolTip>
    </TextBlock>
</DataTemplate>

我希望我的工具提示显示,只有ItemsSource="{Binding Contains}"

中至少有一行

我需要在Visibility属性中写一下什么? 像

这样的东西
<ToolTip Visibility="{Binding Contains.Length > 0}">

但我无法弄清楚语法应该是什么!有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您将不得不在该绑定上使用自定义转换器。 Visibility属性不是布尔值,它是枚举。

答案 1 :(得分:2)

作为替代方式,您可以使用触发器: 默认情况下将工具提示的可见性设置为Visible并添加此标记:

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Contains.Length}" Value="0">
        <Setter TargetName="myTooltip" Property="Visibility" Value="Hidden" />
    </DataTrigger>
</DataTemplate.Triggers>

答案 2 :(得分:2)

这是IValueConverter实施的工作。在过去发布过很多这样的例子后,我意识到大部分时间都会有一些更通用的实现,所以我在博客上写了这些。

您需要的IValueConverterStringToObjectConverter博文here。使用项目中此转换器的代码,您可以在如下资源中创建它的实例: -

<Grid x:Name="LayoutRoot">
    <Grid.Resources>
        <local:StringToObjectConverter x:Key="CountToVisibility">
            <ResourceDictionary>
                <Visibility x:Key="__Default__">Visible</Visibility>
                <Visibility x:Key="0">Collapsed</Visibility>
            </ResourceDictionary>
        </local:StringToObjectConverter>
    </Grid.Resources>

然后在绑定到可见性时使用,在您的情况下: -

 <ToolTip Visibility="{Binding Contains.Length, Converter={StaticResource CountToVisibility}}">
顺便说一句,您确定要Length不是Count吗?