2014-10-29 16 views
5

tôi đã thực hiện sau đây ứng dụng (như là một thử nghiệm)Chạm vào Lỗi trong 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); 
     } 
    } 
} 

tôi bắt sự kiện mouseDown vì nó bắt cả hai nút chuột xuống các sự kiện và chạm xuống sự kiện . Mã có hành vi mong đợi cho các nhấp chuột. Chạm cho tôi một số rắc rối.

Nếu tôi chạm vào TextBlock, nó sẽ mở ra một cửa sổ hộp thoại như được yêu cầu. sau khi đóng nó, bất kỳ liên lạc nào trên cửa sổ sẽ mở cửa sổ hộp thoại, ngay cả khi chạm không vào TextBlock.

Đây có phải là lỗi không? Tôi có thể làm việc này không?

CHỈNH SỬA: tôi đã đăng giải pháp, một bản sửa lỗi thực tế sẽ vẫn hữu ích

+1

Tôi có hai quan sát - một, nếu bạn di chuyển cửa sổ, vấn đề dừng lại, và hai, trong một tình huống thực tế như thế này, có lẽ bạn sẽ muốn sử dụng một nút (tôi biết đây chỉ là một bài kiểm tra, vì vậy đây là một câu hỏi thú vị). Có lẽ điều này có thể giúp bạn nghĩ ra điều gì đó. – Hosch250

+0

Tôi xin lỗi, tôi không thể tìm thấy bất kỳ thứ gì hoạt động. – Hosch250

+0

@ hosch250 Cảm ơn bạn đã nhấn nút. Nó không thực sự là một câu trả lời cho vấn đề nhưng nó là một công việc xung quanh. Mặc dù vậy, tôi muốn nút trông giống như một TextBlock, vì vậy tôi đã thiết lập lại nút này, sớm đăng giải pháp của tôi – RazorEater

Trả lời

0

Đối với những người khác gặp phải vấn đề tương tự. Đây không phải là một sửa chữa cho vấn đề, nhưng nó là một cách giải quyết. tôi đã sử dụng một nút và restyled nó trông giống như một 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> 

Mã cho Button_Click cũng giống như TextBlock_MouseDown

Các vấn đề liên quan