不确定是否有人遇到此问题,但每当我点击应用程序中的按钮时,我的UWP应用程序上都会显示一个随机主页按钮。该按钮在我的应用程序中不存在,因此我不确定它的来源。它每次出现在同一个地方,如果我拖动窗口,它就不会随之移动。每次我点击按钮控件时都会出现,然后在4-5秒后消失。
更新 经过进一步调查后,我发现了发生的事情。我在后台有一个webview控件,在前视图中有按钮控件。我导航到的网站(vans.co.uk)在左上角有商店标识,当鼠标悬停在它上面时," Home"工具提示出现。但是,如果我在屏幕上的任何位置单击按钮控件,并在单击方法中将该按钮的可见性属性更改为折叠,则此" Home"工具提示出现。单击按钮时折叠按钮时,必须将某种事件传递给webview。这种情况发生在任何网站上,而不仅仅是vans.co.uk,但此网站上的徽标的位置是工具提示弹出的方式。我写了一个简单的应用程序来重新创建:
XAML:
<Page
x:Class="HomeTootipBug.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:HomeTootipBug"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<WebView x:Name="webView" Visibility="Visible" DefaultBackgroundColor="White" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"/>
<Button x:Name="btn" Background="Gray" HorizontalAlignment="Center" VerticalAlignment="Center" Width="500" Height="100" Click="btn_Click"></Button>
</Grid>
</Page>
xaml.cs:
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace HomeTootipBug
{
public sealed partial class MainPage : Page
{
public bool compOut = false;
public MainPage()
{
this.InitializeComponent();
webView.Navigate(new Uri("https://www.vans.co.uk"));
}
private void btn_Click(object sender, RoutedEventArgs e)
{
btn.Visibility = Visibility.Collapsed;
btn.Visibility = Visibility.Visible;
}
}
}
答案 0 :(得分:0)
这似乎是对vans.co.uk的工作方式以及UWP事件处理的工作方式的综合。简而言之,将按钮折叠起来可以使WebView获得焦点,这很可能促使vans网站运行显示Home按钮的JS。
您可以通过将GotFocus事件处理程序添加到WebView来监视发生的情况。如果您从按钮未折叠的情况开始:
private void btn_Click(object sender, RoutedEventArgs e)
{
//btn.Visibility = Visibility.Collapsed;
//btn.Visibility = Visibility.Visible;
Debug.WriteLine("Button Clicked "+ e.OriginalSource.ToString());
}
private void WebView_GotFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Webview got focus");
}
单击几次按钮,您将看到以下调试输出:
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
Button Clicked Windows.UI.Xaml.Controls.Button
现在,如果您从代码中删除注释,则启用折叠功能
private void btn_Click(object sender, RoutedEventArgs e)
{
btn.Visibility = Visibility.Collapsed;
btn.Visibility = Visibility.Visible;
Debug.WriteLine("Button Clicked "+ e.OriginalSource.ToString());
}
private void WebView_GotFocus(object sender, RoutedEventArgs e)
{
Debug.WriteLine("Webview got focus");
}
单击几下即可在调试控制台中看到以下输出:
Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus
Webview got focus
Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus
Webview got focus
Button Clicked Windows.UI.Xaml.Controls.Button
Webview got focus
这很有可能与UWP处理event bubbling & routed events的方式有关。