這是我的 MaskedTextBox(來自擴展 WPF 工具包)的 xaml,我將文本與資料Time背景關系中的屬性系結。
<wpfx:MaskedTextBox
x:Name="MyMaskedTextBox"
AllowPromptAsInput="True"
Mask="00:00:00"
PromptChar="0"
ResetOnPrompt="False"
Text="{Binding Time, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
這是我的 Datacontext 中更新它的部分,也是我的Time屬性。
public class MyViewModel : ObservableObject, INavigationAware {
public string Time {
get;
set; //break point 1
}
public static void UpdateTime(string time) {
Time = time;
OnPropertyChanged("Time");
}
}
問題是每當我單擊 MaskedTextBox 時,文本都會恢復為提示字符。
例如,我將啟動應用程式,MaskedTextBox 將具有 00:00:00。在某些事件之后,我將時間屬性更新為 12:34:56,它會正確顯示在 UI 上。但是當我單擊 MaskedTextBox 時,它會將文本更改回 00:00:00。
斷點 1 的呼叫堆疊只顯示“外部代碼”。我在檔案中找不到關閉此行為的選項,我該如何阻止它?
uj5u.com熱心網友回復:
嘗試將Value屬性系結到您的Time屬性,而不是系結Text屬性:
<wpfx:MaskedTextBox
...
Value="{Binding Time, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
控制元件本身Text根據Value和設定屬性Mask。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/408095.html
標籤:
