在WPF,TextBox元素不會得到機會,利用「回車」創建keyup事件,直到按鈕你不會設置屬性:AcceptsReturn =「True」。
但是,它不能解決處理TextBox元素中的KeyUp事件的問題。按下「ENTER」後,您將在TextBox中獲得新的文本行。
我已經通過使用Bubble事件策略解決了使用TextBox元素的KeyUp事件的問題。這很簡單。你必須在一些(任何)父元素附加keyUp事件處理程序:
XAML:
<Window x:Class="TextBox_EnterButtomEvent.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:TextBox_EnterButtomEvent"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid KeyUp="Grid_KeyUp">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height ="0.3*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="1" Grid.Column="1" Padding="0" TextWrapping="WrapWithOverflow">
Input text end press ENTER:
</TextBlock>
<TextBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch"/>
<TextBlock Grid.Row="4" Grid.Column="1" Padding="0" TextWrapping="WrapWithOverflow">
You have entered:
</TextBlock>
<TextBlock Name="txtBlock" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Stretch"/>
</Grid>
</Window>
C#邏輯部分(KeyUp事件處理程序連接到網格元素):
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Grid_KeyUp(object sender, KeyEventArgs e)
{
if(e.Key == Key.Enter)
{
TextBox txtBox = e.Source as TextBox;
if(txtBox != null)
{
this.txtBlock.Text = txtBox.Text;
this.txtBlock.Background = new SolidColorBrush(Colors.LightGray);
}
}
}
}
結果:
Application main window with result
有什麼錯誤訊息?在'KeyDown'方法中放置一個斷點,看它是否被命中。另外,您應該將ViewModel代碼移動到它自己的方法中,因爲您重複同樣的事情兩次。從按鈕點擊處理程序和keydown處理程序調用此方法。 – keyboardP 2013-03-18 22:16:15
對於MVVM,這是 [answer](http://stackoverflow.com/a/7086853/873979) – Haritha 2013-03-19 04:18:30