我有以下代码:
<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}">
但我无法弄清楚语法应该是什么!有什么想法吗?
答案 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
实施的工作。在过去发布过很多这样的例子后,我意识到大部分时间都会有一些更通用的实现,所以我在博客上写了这些。
您需要的IValueConverter
是StringToObjectConverter
博文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
吗?