通過搜索,我發現這個問題經常出現,但從來沒有真正解決過。 我確實有一個C#的應用程式/程式,我會努力做到符合mvvm。 我有一個視窗,里面的UserControl顯示不同的視圖。 其中一個視圖包含一個文本框,文本框的文本被系結到虛擬機的一個proptery。 我的文本框有兩個輸入系結,分別為 "enter "和 "return"--兩者都指向同一個命令。
當點擊 "enter "時,文本框的值應該被處理,文本框應該被清除并重新聚焦。這樣做的結果是 .... 一次性.... 用String.Empty清除文本框會破壞系結關系......這可以在這里的幾個帖子中找到......最有效的解決方案是textboxname.clear() ......。 但我在視圖模型中沒有 "textboxname",只在后臺代碼中,但我所有的邏輯都在虛擬機中......所以誰能幫我解決這個問題,我怎樣才能在不破壞輸入文本和多次點擊回車的系結的情況下清除文本框?
我的代碼
<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"/gt;
</TextBox.InputBindings>
</TextBox>/span>
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;
//更多的事情要做。
}
public bool CanCheckInEnter(object value)
{
return true。
}
uj5u.com熱心網友回復:
作業
CheckInNumber = string.Empty;
并沒有"清除"任何系結。你的結論是錯誤的。
然而,在CheckInNumber屬性的setter中,你確實只能得到空字串--在清除之后。為了不僅在TextBox失去焦點或你重置源屬性時獲得屬性更新,在Text Binding上設定UpdateSourceTrigger=PropertyChanged:
<TextBox 。 . Text="{Binding CheckInNumber, UpdateSourceTrigger=PropertyChanged}">
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324487.html
標籤:
