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
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
Przykro mi, nie mogę znaleźć niczego, co działa. – Hosch250
@ 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