【发布时间】:2021-09-19 12:18:40
【问题描述】:
谷歌搜索告诉我,这通常是一个问题,但从未真正解决。 我在 C# 中确实有一个 App/Prgramm,我会尝试符合 mvvm。 我确实有一个窗口,其中一个 UserControl 显示不同的视图。 我的一个视图包含一个文本框,文本框的文本绑定到 VM 的属性。 我的文本框有 2 个输入绑定,用于“输入”和“返回” - 都导致相同的命令。
点击“输入”时,文本框的值应该被处理,文本框应该被清除并重新聚焦......这工作......一次...... 使用 String.Empty 清除文本框会破坏 Bindings ...这可以在此处的几个帖子中找到...最解决方案是 textboxname.clear() ... 但是我在视图模型中没有“文本框名称”,只有在代码隐藏中,但我所有的逻辑都在虚拟机中......所以有人可以帮我解决问题,我如何在不破坏绑定的情况下清除文本框输入文本并多次回车?
我的代码
<TextBox x:Name="tb_checkinbox" Grid.Row="0" Grid.Column="1" Width="200" Height="25" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding CheckInNumber}">
<TextBox.InputBindings>
<KeyBinding Command="{Binding OnCheckInEnterCommand}" Key="Return"/>
<KeyBinding Command="{Binding OnCheckInEnterCommand}" Key="Enter"/>
</TextBox.InputBindings>
</TextBox>
public CheckinVM()
{
OnCheckInEnterCommand = new RelayCommand(OnCheckInEnter, CanCheckInEnter);
}
private string _checkInNumber;
public string CheckInNumber
{
get { return _checkInNumber; }
set { SetProperty(ref _checkInNumber, value); }
}
public ICommand OnCheckInEnterCommand { get; set; }
public void OnCheckInEnter(object value)
{
CheckInNumber = String.Empty;
/// More to do
}
public bool CanCheckInEnter(object value)
{
return true;
}
【问题讨论】: