2010-01-26 17 views
11

này hoạt động:Làm thế nào để đặt một sự kiện MouseDown trong một Style?

XAML:

<Window x:Class="Test239992.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <StackPanel> 
     <TextBlock Tag="1" Text="Customers" MouseDown="Handle_Click"/> 
     <TextBlock Tag="2" Text="Appointments" MouseDown="Handle_Click"/> 
    </StackPanel> 
</Window> 

Mã Đằng sau:

using System; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Input; 

namespace Test239992 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
     } 

     private void Handle_Click(object sender, MouseButtonEventArgs e) 
     { 
      int id = Int32.Parse(((TextBlock)sender).Tag.ToString()); 
      MessageBox.Show("you chose id " + id.ToString()); 
     } 
    } 
} 

Nhưng làm thế nào để tôi đặt sự kiện MouseDown trong một phong cách, điều này mang lại cho tôi lỗi "Không thể tìm thấy Thuộc tính kiểu 'MouseDown' vào loại 'System.Windows.Controls.TextBlock' ":

<Window x:Class="Test239992.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <Style TargetType="{x:Type TextBlock}" x:Key="ClickableTextBlockStyle"> 
      <Setter Property="MouseDown" Value="Handle_Click" /> 
     </Style> 
    </Window.Resources> 
    <StackPanel> 
     <TextBlock Tag="1" Text="Customers" Style="{DynamicResource ClickableTextBlockStyle}"/> 
     <TextBlock Tag="2" Text="Appointments" Style="{DynamicResource ClickableTextBlockStyle}"/> 
    </StackPanel> 
</Window> 

Trả lời

14

Hãy thử EventSetter :)

<Style TargetType="{x:Type TextBlock}" x:Key="ClickableTextBlockStyle"> 
     <EventSetter Event="MouseDown" Handler="Handle_Click" /> 
    </Style> 
Các vấn đề liên quan