3
我試圖創建一個日期編輯UserControl,但使用TextBlock而不是TextBox,因爲我想要一個輸入上下文而不是管理六個可能的焦點。如何接受焦點C#WPF UserControl
我該如何接受焦點?我試着將Focusable設置爲TRUE,但似乎還不夠。我還有什麼要做的?
我試圖創建一個日期編輯UserControl,但使用TextBlock而不是TextBox,因爲我想要一個輸入上下文而不是管理六個可能的焦點。如何接受焦點C#WPF UserControl
我該如何接受焦點?我試着將Focusable設置爲TRUE,但似乎還不夠。我還有什麼要做的?
聽起來像是你需要設置KeyboardFocus
到元素
例子:
<UserControl x:Class="MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
FocusManager.IsFocusScope="True"
FocusManager.FocusedElement="{Binding ElementName=mytextBlock}">
<Grid>
<TextBox Name="mytextBlock" />
</Grid>
</UserControl>
或者在代碼隱藏:
FocusManager.SetFocusedElement(this, mytextblock);
Keyboard.Focus(mytextblock);
現在還不是奇怪 - 你還沒有回答我打算問的問題,但你已經回答了我所問的問題,並有我需要的答案。謝謝。嗨sa_ddam你有沒有遇到一個用戶控件的問題,在運行時可以正常工作,但當你在VS2012設計器的WPF窗口上點擊它作爲一個窗口小部件時會拋出一個空引用異常? –
是的,我遇到了許多新VS2012設計師的問題,大多數時候它會拋出隨機錯誤,設計師不會加載,我必須關閉xxxx.xaml並重新打開才能解決問題。希望他們在SP1中對它進行整理,因爲我記得SP1發佈之前與VS2010存在類似的問題(不像VS2012那麼糟糕,但它發生了)。我想這就是爲什麼這麼多人使用混合,但我不喜歡xaml膨脹混合添加到我的代碼。 –