我在文本框上將IsTabStop設置爲false,我知道這使得控件無法獲得焦點,但根據Silverlight Forums,它仍應該能夠接收鼠標事件。在我的tbxTotal_MouseLeftButtonUp方法中,我有MouseLeftButtonUp事件連線和一個斷點,並且在調試過程中它永遠不會被擊中。 SL論壇中的線程現在已經很老了,所以也許這在某個地方的更新中發生了變化。我想要一個不能被選中的文本框,但仍然可以編輯。這真的很難嗎?IsTabStop = SL4文本框上的False
6
A
回答
3
我沒有意識到這一點,但似乎是這樣,此外,我似乎無法得到MouseLeftButtonUp觸發。 MouseLeftButtonDown確實會觸發,並使用它可以做到這一點。
<TextBox IsTabStop="False" MouseLeftButtonDown="TextBox_MouseLeftButtonDown" />
然後在代碼中,您可以像這樣處理事件。
private void TextBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var textBox = ((TextBox) sender);
textBox.IsTabStop = true;
textBox.Focus();
textBox.IsTabStop = false;
}
這可能是值得的包裝在一個CustomControl
public class FocusableTextBox : TextBox
{
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
if (!IsTabStop)
{
IsTabStop = true;
Focus();
IsTabStop = false;
}
base.OnMouseLeftButtonDown(e);
}
}
1
@seekerOfKnowledge:在LostFocus
禁用IsTabStop
是一個好方法,但你重新聚焦黑客是不必要的。由於IsTabStop
的更改尚未生效,因此第一次沒有任何明顯效果。這種方法也可以與任何其他控制一起使用。
var control = sender as Control;
if (control != null)
{
control.MouseLeftButtonDown += (sender, args) =>
{ //This event fires even if the control isn't allowed focus.
//As long as the control is visible, it's typically hit-testable.
if (!control.IsTabStop)
{
control.IsTabStop = true;
//threading required so IsTabStop change can take effect before assigning focus
control.Dispatcher.BeginInvoke(() =>
{
control.Focus();
});
}
};
control.LostFocus += (sender, args) =>
{ //Remove IsTabStop once the user exits the control
control.IsTabStop = false;
};
}
相關問題
- 1. 爲MahApps Metro主題上的圖標設置「istabstop = false」
- 2. SDK DatePicker IsTabStop忽略
- 3. WPF ComboBox&IsTabStop行爲
- 4. DataForm中的組合框,SL4
- 5. SL4 - DataGridRowGroupHeader中的TextTrimming
- 6. 允許使用validateRequest = false的asp文本框中的HTML文本
- 7. 如何將IsTabStop用於圖像控件?
- 8. Crystal Reports使文本框可見true false
- 9. 允許雙擊文本框IsEnabled = false
- 10. 返回false的文件上傳腳本
- 11. SDK AutoCompleteBox忽略IsTabStop奇怪問題
- 12. 在SL4
- 13. 這MVVM框架有利於SL4?
- 14. 選擇文本框的文本拷貝
- 15. MEF + SL4問題
- 16. SL4/MVVM:在VM
- 17. 問題與SL4
- 18. Silverlight.FX和SL4
- 19. SL4 saveFileDialog.DefaultFileName解決
- 20. WCF RIA Services,SL4
- 21. 爲一個文本框自定義模板,因爲我想上的IsEnabled = FALSE
- 22. 在css中插入文本框的上邊框的文本
- 23. Windows7上的WPF文本框邊框
- 24. Gumby框架上的三個文本框?
- 25. 如何設置文本框的只讀屬性true或false
- 26. 使用usesubmitbehavior = false訪問代碼隱藏文本框的值
- 27. Popup的文本框在popup.isOpen = false後沒有消失
- 28. 如何更改winform中文本框的readonly屬性false?
- 29. asp.net:灰色的文本框啓用= false,但需要獲得值
- 30. 將文本框上傳到ftp C上的文本文件#
嘿,甚至沒有看到,如果MouseLeftButtonDown工作。只是表明假設是不好的。謝謝。 – seekerOfKnowledge 2011-04-26 14:14:42
但令人討厭的是,只是調用.Focus on MouseLeftButtonDown不起作用,爲什麼你必須打開/關閉舞蹈:( – bendewey 2011-04-26 14:21:06
另外,因爲我的文本框是在樹視圖中,一些奇怪的事情正在發生。文本框中,鼠標向下被觸發,我將IsTabStop設置爲true,將其設置爲焦點,在LostFocus中,我將IsTabStop設置爲false。但是,文本框所在的樹視圖項獲取焦點,因此取消了我剛纔執行的操作在樹狀視圖項目中IsTabStop設置爲false,所以我覺得奇怪的是它可以獲得焦點,但我也對它進行了攻擊。在我的文本框LostFocus事件中,我實際上把焦點重新放到了我的文本框中,然後直接在,將IsTabStop設置爲false。 – seekerOfKnowledge 2011-04-26 14:26:18