2014-10-29 78 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