首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使ListViewItem ToolTip优先于TextBlock ToolTip?

如何使ListViewItem ToolTip优先于TextBlock ToolTip?
EN

Stack Overflow用户
提问于 2015-10-21 18:17:29
回答 1查看 670关注 0票数 0

给定对象,如:

代码语言:javascript
复制
public class Item
{
    public string Foo { get; set; }
    public string Bar { get; set; }
    public int Hidden { get; set; }
}

简单地显示为:

代码语言:javascript
复制
<Grid>
    <Grid.Resources>
        <!-- style stuff -->
    </Grid.Resources>
    <ListView 
        x:Name="ItemsListView"
        ItemsSource="{Binding AllItems}"
        SelectedValue="{Binding SelectedItem}">
        <ListView.View>
            <GridView>
                <GridViewColumn 
                    Width="75"
                    DisplayMemberBinding="{Binding Foo, Mode=OneWay}"
                    Header="Foo"/>
                <GridViewColumn 
                    Width="75"
                    DisplayMemberBinding="{Binding Bar, Mode=OneWay}"
                    Header="Bar"/>
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

Grid.Resources中,我创建了以下样式,允许ToolTip在悬停时显示每个单元格值:

代码语言:javascript
复制
<Style TargetType="{x:Type TextBlock}">
    <Setter 
        Property="ToolTip"
        Value="{Binding RelativeSource={RelativeSource Self},  Path=Text}"/>
    <Setter
        Property="TextTrimming"
        Value="CharacterEllipsis"/>
</Style>

这是按要求工作的。但是现在我想根据Hidden属性验证一行。如果值为-1,则以红色勾画行,并显示一条TooTip消息:

代码语言:javascript
复制
<Style TargetType="{x:Type ListViewItem}">
    <Style.Triggers>
        <DataTrigger
            Binding="{Binding Hidden}"
            Value="-1">
            <Setter Property="BorderBrush" Value="Red"/>
            <Setter Property="ToolTip" Value="Bad Item... Bad!"/>
        </DataTrigger>
    </Style.Triggers>
</Style>

这也有效,只要我在无效项的单元格边框上徘徊。当我在无效项的FooBar单元上悬停时,将显示显示单元格值的前一个ToolTip

如果行无效,如何让ListViewItem.ToolTip 重写 TextBlock.ToolTip

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 18:55:52

您可以按照以下方式设置TextBlock样式,以便在指定条件下在DataTrigger中设置ToolTip。在这种情况下,如果没有在ToolTip上设置GridViewColumn,那么ListViewItem工具提示就会自动出现。

代码语言:javascript
复制
<Style TargetType="{x:Type TextBlock}">
    <Setter
        Property="TextTrimming"
        Value="CharacterEllipsis"/>
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Style.Triggers>
        <DataTrigger
            Binding="{Binding Hidden}"
            Value="0">
            <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},  Path=Text}"/>
        </DataTrigger>
    </Style.Triggers>
 </Style>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33266461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档