UWP WinUI2 Xaml:如何在禁用的 GridViewItem 上显示工具提示

问题描述 投票:0回答:1

我有以下Xaml

<DataTemplate x:Key="ImageTextTemplate" x:DataType="local1:CustomDataObject">
    <Grid AutomationProperties.Name="{x:Bind Title}" Width="280">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Image Source="{x:Bind ImageLocation}" Height="100" Stretch="Fill" VerticalAlignment="Top"/>
        <StackPanel Grid.Column="1" Margin="8,0,0,8">
            <TextBlock Text="{x:Bind Title}" Style="{ThemeResource SubtitleTextBlockStyle}" Margin="0,0,0,8"/>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{x:Bind Views}" Style="{ThemeResource CaptionTextBlockStyle}"/>
                <TextBlock Text=" Views " Style="{ThemeResource CaptionTextBlockStyle}"/>
            </StackPanel>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{x:Bind Likes}" Style="{ThemeResource CaptionTextBlockStyle}" />
                <TextBlock Text=" Likes" Style="{ThemeResource CaptionTextBlockStyle}"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</DataTemplate>

<GridView
    x:Name="ContentGridView"
    ContainerContentChanging="GridViewContainerContentChanging"
    IsItemClickEnabled="{x:Bind ItemClickCheckBox.IsChecked.Value, Mode=OneWay}"
    ItemClick="ContentGridView_ItemClick"
    ItemTemplate="{StaticResource ImageTemplate}"
    SelectionChanged="ContentGridView_SelectionChanged" 
    FlowDirection="LeftToRight"/>

我使用处理程序禁用了一些项目

ContainerContentChanging
。我想在那些禁用的项目上设置工具提示。我该怎么做?

我尝试过的东西-

  1. 只需在处理程序中设置工具提示
    ContainerContentChanging
    。但似乎工具提示未显示在 UWP 应用程序中的禁用项目上。
  2. 试图处理
    PointerEntered
    GridVewItem
    事件。但是一旦禁用网格项,就不会捕获任何指针事件。

好像

ToolTipService.ShowOnDisabled
不可用。它在 WPF 中可用。那么我们如何在 UWP 中显示禁用的 GridViewItem 上的工具提示?

xaml uwp uwp-xaml winui
1个回答
0
投票

我们如何在 UWP 中显示禁用的 GridViewItem 的工具提示?

你不能以正常的方式做到这一点。根据文档,当您禁用 GridViewItem 时,这意味着用户无法与 GridViewItem 进行交互,例如聚焦、按住或将指针悬停在上方。这些操作是触发工具提示的正常方式。

但是您可以尝试通过 ToolTip.IsOpen 属性 来做到这一点。如果要使用这种方式,需要手动控制tooltip打开和关闭的时间

我尝试在禁用的按钮中进行测试,您可以手动显示禁用按钮的工具提示。

Xaml:

  <StackPanel>
    <Button x:Name="TargetButton" Content="Submit"  IsEnabled="False">
        <ToolTipService.ToolTip>
            <ToolTip>
                <TextBlock Text="This is the tool tip"/>
            </ToolTip>
        </ToolTipService.ToolTip>
    </Button>
    <Button Content="Click" Click="Button_Click"/>
</StackPanel>

代码:

 private void Button_Click(object sender, RoutedEventArgs e)
    {
        ToolTip tooltip = ToolTipService.GetToolTip(TargetButton) as ToolTip;

        tooltip.IsOpen = !tooltip.IsOpen;
    }

更多信息在这里:Control.IsEnabled PropertyToolTip Class.

© www.soinside.com 2019 - 2024. All rights reserved.