【问题标题】:C# WPF MVVM Textbox Clearing without breaking Command Bindings?C# WPF MVVM 文本框清除而不破坏命令绑定?
【发布时间】: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;
        }

【问题讨论】:

    标签: c# wpf mvvm


    【解决方案1】:

    任务

    CheckInNumber = string.Empty;
    

    不“清除”任何绑定。你的结论是错误的。

    但是,您只会在 CheckInNumber 属性的设置器中获得空字符串(在清除之后)。为了不仅在 TextBox 失去焦点或重置源属性时获取属性更新,请在 Text Binding 上设置 UpdateSourceTrigger=PropertyChanged

    <TextBox ... Text="{Binding CheckInNumber, UpdateSourceTrigger=PropertyChanged}">
    

    【讨论】:

      猜你喜欢
      • 2017-08-05
      • 1970-01-01
      • 2015-10-16
      • 2012-11-24
      • 2020-01-05
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      相关资源
      最近更新 更多