-
代碼?
<TextBox Grid.Column="0" x:Name="textBox" Margin="10,5,0,5" TextWrapping="Wrap" Text="{Binding SendMessage,UpdateSourceTrigger=PropertyChanged}" VerticalContentAlignment="Center" CaretBrush="Green" BorderBrush="{DynamicResource background_brush}" BorderThickness="0" FontSize="15" Padding="0" MinHeight="25" MaxHeight="150" ScrollViewer.VerticalScrollBarVisibility="Auto" AcceptsReturn="True"><TextBox.Resources><Style TargetType="{x:Type Border}"><Setter Property="CornerRadius" Value="2"/></Style></TextBox.Resources><TextBox.InputBindings><!--鍵盤事件綁定--><KeyBinding Command="{Binding SendMessageFunCommand}" Key="Enter" Modifiers="Ctrl"/></TextBox.InputBindings>
</TextBox>
-
?UpdateSourceTrigger解釋
如果你想在用戶輸入時立即更新數據源,可以將UpdateSourceTrigger
設置為PropertyChanged
:
<TextBox Text="{Binding Path=UserName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
如果希望在TextBox失去焦點時更新數據源,可以將UpdateSourceTrigger
設置為LostFocus
(這是默認值):
<TextBox Text="{Binding Path=UserName, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" />
如果需要手動控制更新時機,可以將UpdateSourceTrigger
設置為Explicit
,并在代碼中調用UpdateSource
方法:
<TextBox x:Name="myTextBox" Text="{Binding Path=UserName, Mode=TwoWay, UpdateSourceTrigger=Explicit}" />
然后在代碼中調用:
var bindingExpression = myTextBox.GetBindingExpression(TextBox.TextProperty);
bindingExpression.UpdateSource();
通過這些方法,你可以靈活地控制TextBox數據綁定的更新時機。
-
允許回車換行:
若需同時支持Enter
鍵換行和提交,可通過AcceptsReturn
和InputBindings
區分行為:
<TextBox AcceptsReturn="True"><TextBox.InputBindings><KeyBinding Command="{Binding SendMessageFunCommand}"Key="Enter"Modifiers="Ctrl"/></TextBox.InputBindings>
</TextBox>