【发布时间】:2017-09-29 11:02:51
【问题描述】:
问题描述
当使用触摸(屏幕)输入来操作 WPF 工具栏溢出内的按钮时,应用程序停止响应鼠标和触摸输入。键盘输入或任何代码执行(即使在 UI 线程中)似乎不受影响。将鼠标移到 Windows 内容区域之外会释放冻结,并且可以再次使用应用程序(直到再次使用溢出)。
它有时会直接发生在第一次交互时,通常您可以在“冻结”发生之前操作几次按钮。
使用鼠标访问溢出内的按钮时不会发生“冻结”。
测试环境
我做了一个小型测试项目来验证它不是我的应用程序中的东西,并且我能够验证 .NET 4.5.2、4.6.1 和 4.7 的问题。
它已在两台具有不同触摸屏的不同 Windows 7 PC 上进行了测试。两者的结果相同。
代码:
<Window x:Class="ToolBarTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ToolBarTest"
mc:Ignorable="d"
Title="MainWindow"
Height="350"
Width="525">
<DockPanel>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button Content="New" />
<Button Content="Open" />
<Button Content="Save" />
</ToolBar>
<ToolBar>
<Button Content="Cut" />
<Button Content="Copy" />
<Button Content="Paste" />
<Button ToolBar.OverflowMode="Always">
<Grid>
<TextBlock Text="Testbutton" />
</Grid>
</Button>
</ToolBar>
</ToolBarTray>
<TextBox AcceptsReturn="True" />
</DockPanel>
其他想法
在我看来,一旦溢出面板关闭,工具栏或溢出切换按钮就会捕获鼠标设备。保持溢出面板打开确实可以防止冻结(在我的大应用程序中测试)
【问题讨论】:
标签: c# wpf touch desktop-application