2014-10-29 76 views
5

我提出以下的应用(作为测试)在WPF中触摸错误?

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上,触摸窗口也会打开对话窗口。

这是一个错误?我可以解决这个问题吗?

编辑:我公布一个解决方法,实际的解决将仍然是有用的

+1

我有两点看法 - 一个,如果你移动窗口,问题停止了,两个,在这样的真实情况下,你可能会想要使用一个按钮(我知道这只是一个测试,所以这是一个有趣的问题)。也许这可以帮助你想出一些东西。 – Hosch250 2014-10-29 17:32:21

+0

对不起,我找不到任何有效的东西。 – Hosch250 2014-10-29 18:05:08

+0

@ hosch250感谢您的按钮提示。这不是真正的问题的答案,但它是一种解决方法。我希望按钮看起来像一个TextBlock,所以我重新调整了Button,很快发布了我的解决方案 – RazorEater 2014-10-30 08:19:28

回答

0

对于谁遇到同样问题的其他人。这不是解决问题的方法,但它是一种解决方法。 我用了一个按钮,并重新设计它看起来像一个TextBlock

XAML:

<Grid Background="Transparent"> 
    <Button HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click" Content="openDialog"> 
     <Button.Template> 
      <ControlTemplate TargetType="Button"> 
       <ContentPresenter /> 
      </ControlTemplate> 
     </Button.Template> 
    </Button> 
</Grid> 

代码Button_Click相同TextBlock_MouseDown