2017-02-23 88 views
1

Я пытаюсь получить мой TextBlock стрелять некоторые события, и the resource here говорит, что:Оба MouseDown и KeyDown событие не уволили, даже если Focusable установлен в истинное

Прежде всего, вам нужно будет установить Фокусное свойство вашего TextBlock to True, это позволит вам вставить элемент, но не Нажмите, чтобы выбрать его, но если вы обрабатываете событие 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(); 
     } 
    } 

В моем случае здесь ни MouseDown или KeyDown Событие уволено ... по любой причине?

+0

Событие MouseDown должен быть уволен, но TextBlock не срабатывает какой-либо KeyDown, даже если вы фокусируете его. Что именно вы пытаетесь достичь? – mm8

ответ

1

Вы добавили события для текстовых блоков не для текстового поля, события будут работать на TextBlock

Remove и добавлять события в 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"/> 
+0

Это было настолько очевидно с учетом ретроспективного анализа. Благодаря! – Graviton