我遇到了textbox.textchanged事件的問題。我的文本框是數據綁定的,當頁面加載時,textchanged事件觸發器。我如何防止它發生,只有當用戶做出任何改變時纔會觸發它?加載頁面時觸發Textbox.TextChanged。我如何防止它?
2
A
回答
8
1
那麼,從您的評論我收集到,你希望用戶進行更改,只有當他顯式保存或關閉表單時才傳播到基礎數據。
您可以在這裏使用UpdateSourceTrigger「顯式」。
<TextBox Text={Binding MyData, UpdateSourceTrigger=Explicit}/>
所以更改只能通過當你的用戶點擊保存按鈕,您的綁定顯式調用UpdateSource傳播。
如果您使用MVVM,還可以在ViewModels中以代碼方式實現相同的邏輯。
2
問題是,無論何時設置文本,TextChanged都會觸發。這正是WPF的工作方式。通過訂閱Window/Usercontrol的Loaded事件,您可以通過在代碼隱藏中設置事件來「解決」此問題。 Loaded事件在每個孩子和他們的孩子完成加載之後觸發,並準備好顯示。
<UserControl ---- Loaded="UserControl_Loaded">
-
public void UserControl_Loaded(object sender, RoutedEventArgs e)
{
_txtBox.TextChanged += txt_changed;
}
public void txt_changed(object sender, RoutedEventArgs e)
{
(...)
}
+0
我認爲這不起作用的原因是我的文本框是數據綁定的,我的默認值在加載完成後加載到文本框中,導致textchanged事件觸發。 – will0809
0
我有同樣的問題,並最終解決。
在窗口上,我添加了一個窗口加載的變量,並將Window_Loaded事件結束時設置爲true。
在TextChanged事件上檢查您的變量是否爲true。
相關問題
- 1. 如何防止頁面加載時的onchange觸發
- 2. 如何防止頁面重新加載?
- 3. 防止加載頁面
- 4. javascript - 防止頁面加載
- 5. 如何觸發點擊頁面加載?
- 6. 當我們回到上一頁時,如何防止重新加載頁面?
- 7. jQuery - .toggle()在頁面加載時觸發
- 8. 頁面加載時未觸發更改
- 9. jQuery change()在頁面加載時觸發
- 10. Ajax在頁面加載時觸發
- 11. Jquery.change在頁面加載時觸發
- 12. 防止Dozer觸發Hibernate延遲加載
- 13. 如何防止頁面在加載時滾動到iframe?
- 14. 如何在頁面加載時防止css關鍵幀動畫?
- 15. 頁面加載時,如何防止關注表單(頁面底部)?
- 16. 的location.hash防止頁面加載在Chrome
- 17. 防止加載禁用js的頁面
- 18. 的Javascript ::防止當頁面被加載
- 19. 防止頁面重新加載提交
- 20. 如何在Chrome擴展頁面加載頁面後觸發Javascript?
- 21. 防止ASP.NET頁面刷新(F5)時觸發上一個事件觸發器
- 22. 如何在頁面加載時觸發Javascript函數?
- 23. 如何在頁面加載時觸發servlet方法
- 24. ondblclick觸發時防止onclick
- 25. jQuery如何防止使用光標懸停元素加載頁面時的鼠標中鍵觸發
- 26. 加載頁面時何時觸發滾動事件?
- 27. 當後退按鈕觸發popState時,如何防止頁面刷新?
- 28. 如何防止未插入行時觸發插入觸發器?
- 29. 防止頁面加載之間發生白色閃爍電子
- 30. 如何防止表單提交後重新加載頁面 - jQuery
請問爲什麼這個初始事件調用是一個開始的問題?也許我們可以解決問題背後的問題 – Amenti
嗨Amenti。我有一個帶有保存和取消按鈕的導航頁面。帶有一堆文本框的頁面最初用一些默認值填充。我需要限制用戶在按下保存和取消按鈕之前導航出該頁面的能力。 – will0809
我可以模擬取消按鈕按這樣的事情: 'someButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));' 但它沒有奏效。我把它放在InitializeComponent()之後。我做錯了嗎? – will0809