【发布时间】:2018-05-23 12:54:16
【问题描述】:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowState="Maximized"
Title="MainWindow" Height="550" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="4*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Name="TextBox" VerticalContentAlignment="Center" FontSize="30" ></TextBox>
<ListView Grid.ColumnSpan="6" Grid.Row="1"
x:Name="GridControlProducts"
SelectionMode="Single"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Disabled">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="200"/>
<EventSetter Event="PreviewMouseDown" Handler="button_Click" />
</Style>
</ListView.ItemContainerStyle>
</ListView>
<Button Content="Close" Grid.Column="0" Grid.Row="2" Click="Button_Click_1" ></Button>
</Grid>
</Window>
// code behind
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 10; i++)
{
this.GridControlProducts.Items.Add("Test");
}
}
private int c = 1;
private void button_Click(object sender, RoutedEventArgs e)
{
this.TextBox.Text = this.c++.ToString();
}
我有一个 WPF 触摸屏应用程序,其中包含列表视图模板中的产品列表。
使用鼠标,一切如您所愿。但是,在触摸屏上,触摸事件并非每次都触发。例如,如果我在列表视图中连续按下 10 个按钮,则可能会记录 7 次触摸而不会记录 3 次触摸。
如果我自己触摸一个标准按钮,它会非常灵敏。我的模板中的按钮不是(非常受欢迎)。
我创建了一个简单的测试应用程序(见上文)来测试它,我的测试应用程序上的行为是相同的。
没有注册的时候,之前选中的listviewitem依然被选中,而我选中的没有注册的item是浅蓝色的(就像鼠标悬停的时候一样)
任何帮助将不胜感激。
【问题讨论】:
-
如果您使用最新版本的 Visual Studio 2017 和 .Net Framework,是否会发生这种情况? WPF 中的 Touch 有改进和错误修复
-
我升级到 vs 2017,目标是最新的框架 - 4.7.2。同样的问题。触摸事件仅在列表视图中随机触发
-
我没有触摸屏来测试这个,但如果我正在开发一个新的触摸应用程序,我会使用 UWP 及其新的 API
-
谢谢,但不幸的是,触摸屏方面是现有应用程序的新功能。这似乎是一个固有的 WPF 错误
标签: c# wpf xaml events touchscreen