KeyDown在TextBox上输入将null值保存到DataBase

时间:2016-09-01 22:42:42

标签: c# wpf xaml

有奇怪的行为。 我正在创建某种聊天,在其范围内我有一个TextBox(包含新消息)和一个将此文本作为新消息发送到数据库的方法。 我以两种不同的方式调用sendMessage方法:
1.单击按钮上的(单击);
2.按TextBox上的enter(KeyDown)
现在奇怪的行为:点击事件保存文本,一切正常 输入密钥 - 发送两个中的一个:
或者为null(如果在当前的Controler会话中,则输入键是第一个,调用sendMessage的人);
或者上次保存的消息,由Click调用。

以下是代码snipets:

XAML

<Border Name="tbWriteMessage"
        Grid.Column="0"
        Grid.Row="2"
        Background="White"
        Width="{Binding Path=ActualWidth, ElementName=Ruler}"
        BorderBrush="{StaticResource BlueBrush}"
        BorderThickness="0,2,0,0">
    <TextBox Style="{StaticResource EnterMessageWatermark}"
             Text="{Binding Message}"
             KeyDown="tbNewMessage_KeyDown"
             x:Name="tbNewMessage"
             MaxHeight="21"/>
</Border>
<Button Style="{StaticResource Button}" 
        Name="btnEnviar"
        Click="btnEnviar_Click"
        Grid.Column="1"
        Grid.Row="2"
        VerticalAlignment="Top"
        Width="100"
        Height="23"
        Content="Enviar"
        BorderThickness="2,2,0,0"/>

CS

private void sendMessage()
{
    _viewModel.SaveNewMessage();
    tbNewMessage.Clear();
}

private void btnEnviar_Click(object sender, RoutedEventArgs e)
{
    sendMessage();
}

private void tbNewMessage_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {   
        sendMessage();
    }   
}

对于指出解决这一障碍的最佳方法,我将不胜感激 提前谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个不太糟糕的解决方法。
在按键输入我做:1。将焦点发送到不同的对象(在我的情况下,它是按钮,但它不是真的问题).2。调用sendMessage。
3.将焦点设置回TextBox。