即使Focusable设置为true,也不会触发MouseDown和KeyDown事件

时间:2017-02-23 11:03:38

标签: wpf xaml

我正在尝试让我的文本块触发一些事件,the resource here说:

  

首先,您需要设置您的可聚焦属性   TextBlock为True,这将允许您Tab键到项目但不是   单击以选中它,但如果您可以处理MouseDown事件   手动将Focus设置为TextBlock。

这就是我对以下(略微修改过的)样本所做的事情:

XAML代码(MainWindow.xaml)

<Window x:Class="databinding_tutorial.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Personal Details"
        Height="180"
        Width="250"
        ResizeMode="NoResize">
    <Grid Margin="5" Name="gridName">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <TextBlock>First Name</TextBlock>
        <TextBox Grid.Column="1" Margin="5 0 0 5"/>

        <TextBlock Name="LastNameTB" Grid.Row="1" KeyDown="LastNameTB_KeyDown" Focusable="True" MouseDown="LastNameTB_MouseDown">Last Name</TextBlock>
        <TextBox Grid.Column="1" Grid.Row="1" Margin="5 0 0 5"/>

        <TextBlock Name="AgeTB" Grid.Row="2">Age</TextBlock>
        <StackPanel Name="stackPan" Grid.Column="1" Grid.Row="2" Margin="5 0 0 5">
            <Slider Minimum="16" Maximum="120" />
            <TextBlock Name="stackPanTB" Text="16" HorizontalAlignment="Center"/>
        </StackPanel>

        <Button Grid.Column="1" Grid.Row="3" HorizontalAlignment="Right">New Window</Button>
    </Grid>
</Window>

MainWindow.xaml.cs

  /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// http://www.blackwasp.co.uk/WPFDataContext.aspx
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {

            InitializeComponent();
            var ageName = AgeTB.Text;
        }



        private void LastNameTB_KeyDown(object sender, KeyEventArgs e)
        {
            var ageName = AgeTB.Text;
            LastNameTB.Background = Brushes.Blue;

        }



        private void LastNameTB_MouseDown(object sender, MouseButtonEventArgs e)
        {
            LastNameTB.Focus();
        }
    }

就我而言,MouseDownKeyDown事件都没有被解雇......任何原因?

1 个答案:

答案 0 :(得分:1)

您添加的文本块事件不是文本框,事件适用于文本块

删除并向TextBox添加事件

<TextBlock Name="LastNameTB" Grid.Row="1" >Last Name</TextBlock>
<TextBox Grid.Column="1" Grid.Row="1" Margin="5 0 0 5" KeyDown="LastNameTB_KeyDown" Focusable="True" MouseDown="LastNameTB_MouseDown"/>
相关问题