我正在尝试让我的文本块触发一些事件,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();
}
}
就我而言,MouseDown
和KeyDown
事件都没有被解雇......任何原因?
答案 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"/>