I made following application (as a test)
XAML:
<Window x:Class="GUITest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid Background="Transparent">
<TextBlock Text="openDialog" Background="Red" HorizontalAlignment="Center" VerticalAlignment="Top" MouseDown="TextBlock_MouseDown" />
</Grid>
</Window>
C#:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
Console.Out.WriteLine(dlg.FileName);
}
}
}
我捕获mouseDown事件,因为它可以同时捕获鼠标按下事件和触摸按下事件。代码对于鼠标点击有预期的行为。但是触摸会给我带来一些麻烦。
如果我触摸TextBlock,它会像要求的那样打开一个对话框窗口。在关闭它之后,窗口上的任何触摸都会打开对话框窗口,即使触摸不在TextBlock上。
这是一个错误吗?我能绕过这个问题吗?
编辑:我发布了一个解决方法,但实际的修复仍然很有用。