C# Xamarin表单:windows应用程序中的工具提示
我正在使用Xamarin forms PCL构建一个应用程序。我的应用程序将在android、ios、windows 10和windows 8.1上运行 我只需要为windows操作系统实现工具提示控件点击事件。我试过这样做-C# Xamarin表单:windows应用程序中的工具提示,c#,xamarin.forms,tooltip,xamarin.uwp,C#,Xamarin.forms,Tooltip,Xamarin.uwp,我正在使用Xamarin forms PCL构建一个应用程序。我的应用程序将在android、ios、windows 10和windows 8.1上运行 我只需要为windows操作系统实现工具提示控件点击事件。我试过这样做- if(Device.OS == TargetPlatform.Windows) { var tapGestureRecognizer1 = new TapGestureRecognizer(); tapGestureRecognizer1.Tapped +
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应用程序实现的解决方案 创建自定义stacklayout是因为我想在整个部分上有一个工具提示。这样,您可以添加不同的控件。 主要部分是我使用ClassId来获取工具提示中需要显示的文本,如果您愿意,可以添加自定义属性 希望有帮助:-) 添加了自定义堆栈布局:
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);
}
}}
公共类ToolTipRenderUWP:VisualElementRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(元素==null)
返回;
如果(!string.IsNullOrEmpty(Element.ClassId))
{
工具提示工具提示=新工具提示();
toolTip.Content=Element.ClassId;
SetToolTip(这个,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;
}}
公共类ToolTipRenderMac:VisualElementRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
if(元素==null)
返回;
如果(!string.IsNullOrEmpty(Element.ClassId))
this.ToolTip=Element.ClassId;
}}
你能澄清什么不起作用吗?@Sefe什么都不起作用。没有显示工具提示。您正在创建工具提示,但未将其附加到任何内容。难怪你看不到。检查工具提示的Parent
属性。如果它是null
,您的工具提示不会显示,请不要感到惊讶。@Sefe如何添加它的父项。您应该先进行自己的研究。好的起点是和。我找到这些参考资料的时间比你写问题的时间要少。