2013-01-14 86 views
3

我試圖創建一個日期編輯UserControl,但使用TextBlock而不是TextBox,因爲我想要一個輸入上下文而不是管理六個可能的焦點。如何接受焦點C#WPF UserControl

我該如何接受焦點?我試着將Focusable設置爲TRUE,但似乎還不夠。我還有什麼要做的?

回答

4

聽起來像是你需要設置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); 
+1

現在還不是奇怪 - 你還沒有回答我打算問的問題,但你已經回答了我所問的問題,並有我需要的答案。謝謝。嗨sa_ddam你有沒有遇到一個用戶控件的問題,在運行時可以正常工作,但當你在VS2012設計器的WPF窗口上點擊它作爲一個窗口小部件時會拋出一個空引用異常? –

+0

是的,我遇到了許多新VS2012設計師的問題,大多數時候它會拋出隨機錯誤,設計師不會加載,我必須關閉xxxx.xaml並重新打開才能解決問題。希望他們在SP1中對它進行整理,因爲我記得SP1發佈之前與VS2010存在類似的問題(不像VS2012那麼糟糕,但它發生了)。我想這就是爲什麼這麼多人使用混合,但我不喜歡xaml膨脹混合添加到我的代碼。 –