c# - Xamarin 形式 : tooltip in windows app

标签 c# xamarin.forms tooltip xamarin.uwp

我正在使用 Xamarin 表单 PCL 构建一个应用程序。我的应用程序适用于 android、ios、windows 10 和 windows 8.1。

我需要仅针对 Windows 操作系统的点击事件实现工具提示控件。我试过tooltip像这样-

if(Device.OS == TargetPlatform.Windows)
{
    var tapGestureRecognizer1 = new TapGestureRecognizer();
    tapGestureRecognizer1.Tapped += TapGestureRecognizer1_Tapped1;
    icon1.GestureRecognizers.Add(tapGestureRecognizer1);
}

private void TapGestureRecognizer1_Tapped1(object sender, EventArgs e)
{
    Constant.UserActiveTime = DateTime.Now;
    Windows.UI.Xaml.Controls.ToolTip toolTip1 = new Windows.UI.Xaml.Controls.ToolTip();
    toolTip1.Content = "Hi";
    toolTip1.Visibility = Windows.UI.Xaml.Visibility.Visible;    
}

是否有工具提示控件或任何 nuget 包的工作示例?

最佳答案

这是我为 Xamarin UWP 应用程序实现的解决方案。

创建自定义堆栈布局,因为我想要整个部分的工具提示。您可以在其中添加不同的控件。 主要部分是我使用 ClassId 来获取工具提示中需要显示的文本,如果您愿意,您可以添加自定义属性。

希望有帮助:-)

添加了自定义 StackLayout :

public class ToolTipStacklayout :StackLayout
{
}

在 UWP 中添加渲染器:

public class ToolTipRendererUWP : VisualElementRenderer<StackLayout, StackPanel>
{

    protected override void OnElementChanged(ElementChangedEventArgs<StackLayout> e)
    {
        base.OnElementChanged(e);

        if (Element == null)
            return;            

        if (!string.IsNullOrEmpty(Element.ClassId))
        {
            ToolTip toolTip = new ToolTip();
            toolTip.Content = Element.ClassId;
            ToolTipService.SetToolTip(this, toolTip);
        }         
    }}

也为 MAC 桌面应用程序实现了这一点。

这是 MAC 的解决方案:

 public class ToolTipRendererMAC : VisualElementRenderer<StackLayout>
{
    protected override void OnElementChanged(ElementChangedEventArgs<StackLayout> e)
    {
        base.OnElementChanged(e);
        if (Element == null)
            return;

        if (!string.IsNullOrEmpty(Element.ClassId))
            this.ToolTip = Element.ClassId;

    }}

关于c# - Xamarin 形式 : tooltip in windows app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41978916/

相关文章:

c# - MVC - 使用 RedirectToAction() 传递数据

c# - 为什么 Resharper 在这里给我一个 'Localizable Interpolated String' 提示?

c# - 获取用户在 MSAGL 中点击的 Vertex(Node) Object

c# - IOS 工具栏上的图标颜色保持蓝色 xamarin.forms

android - Xamarin.forms : how to add a gradient color for tabbar

javascript - c# 从 Angular 发送 3 个参数到 c#mvc,我在服务器端得到 null

c# - 如何更改禁用按钮的文本颜色?

javascript - 无法根据 highcharts 折线图中的 X 轴值获取唯一的工具提示

javascript - 在悬停时隐藏工具提示?

c# - 如何使工具提示具有圆角 - WPF