2014-10-29 24 views
5

zrobiłem po zastosowaniu (jako test)Dotykowy błąd w 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); 
     } 
    } 
} 

złapię zdarzenie mouseDown bo łapie wydarzenia zarówno przycisk myszy i lądować wydarzenia . Kod ma oczekiwane zachowanie dla kliknięć myszy. Dotyk sprawia mi kłopot.

Po dotknięciu przycisku TextBlock zostanie wyświetlone okno dialogowe z pytaniem. po jego zamknięciu każde dotknięcie okna powoduje otwarcie okna dialogowego, nawet jeśli dotknięcie nie znajduje się na pasku tekstowym.

Czy to błąd? Czy mogę obejść to?

EDIT: I napisali obejścia rzeczywisty dylemat nadal będzie przydatna

+1

mam dwie uwagi - jeden, jeśli przenieść okno, problem ustaje, a po drugie, w realnej sytuacji takiej jak ta, prawdopodobnie chciałbyś użyć przycisku (wiem, że to tylko test, więc jest to interesujące pytanie). Może to pomoże ci wymyślić coś. – Hosch250

+0

Przykro mi, nie mogę znaleźć niczego, co działa. – Hosch250

+0

@ hosch250 Dzięki za końcówkę przycisku. To naprawdę nie jest odpowiedź na problem, ale jest to praca dookoła. Chciałem, żeby przycisk wyglądał jak TextBlock, więc poprawiłem Button, wkrótce publikując moje rozwiązanie – RazorEater

Odpowiedz

0

Dla innych ludzi, którzy działają na ten sam problem. To nie rozwiązuje problemu, ale stanowi obejście tego problemu. użyłem przycisku i odnowiony to wyglądać 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> 

Kod Button_Click jest taka sama jak TextBlock_MouseDown

Powiązane problemy