![](/img/trans.png)
[英]wpf fire PropertyChanged event in binding source that binding gets updated
[英]Which will fire first Binding trigger or Event in WPF control
我被迫使用第三方控件來掩蓋文本輸入。 第三方控件的XAML如下所示
<thirdParty:MaskInput Value={Binding Path=Phone, UpdateSourceTrigger=LostFocus} x:Name=Phone LostFocus=Phone_LostFocus />
現在在我的代碼后面,我有一個這樣的事件處理程序代碼-
public void Phone_LostFocus(object sender, RoutedEventArgs e) { ((MaskInput)sender).Value = ((MaskInput)e.OriginalSource).Text; }
當我執行此代碼時,有時設置了Value屬性,而有時未將其設置為文本。
我懷疑綁定的UpdateSourceTrigger。 我應該將其更改為其他內容嗎? 在這種情況下,UpdateSourceTrigger和事件本身之間的順序是什么? 該順序是可預測的,即是否總是以該順序發生?
我假設在調用LostFocus事件時需要更改嗎?
您可以在此處執行一些操作,因為據我所知,在LostFocus的UpdateSourceTrigger和LostFocus事件之間的順序是不可預測的。
1.在其他時間更新源觸發器。 如果在屬性更改時執行此操作,則在調用LostFocus事件時,模型將已經更新。 缺點是,如果每次更新模型時都在后台進行大量處理,則該過程將運行緩慢。
<thirdParty:MaskInput Value={Binding Path=Phone, UpdateSourceTrigger=PropertyChanged} LostFocus=Phone_LostFocus/>
2.在LostFocus事件中傳播對模型的更改,並將綁定保留為OneWay(從模型到控件)。
<thirdParty:MaskInput Value={Binding Path=Phone, Mode=OneWay}, LostFocus=Phone_LostFocus/>
public void Phone_LostFocus(object sender, RoutedEventArgs e) {
myPhone.Value = ((MaskInput)sender).Text;
//rest of event code here.
}
3.在LostFocus事件中使用MaskInput值,不必擔心模型何時發生更改。
<thirdParty:MaskInput Value={Binding Path=Phone, UpdateSourceTrigger=LostFocus}, LostFocus=Phone_LostFocus/>
public void Phone_LostFocus(object sender, RoutedEventArgs e) {
string currentText = ((MaskInput)sender).Text;
//rest of event using currentText;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.