基礎:我正在使用MVVM模式或它的一個子集。
WPF設置焦點問題
在我的主窗口,我打開了一個新的DataContext一個用戶控件一個按鈕的功能看起來有點像這樣:
public void SetUserControl()
{
UCDatacontext = new UCViewModel(this);
base.OnPropertyChanged("UCDatacontext");
UCViewVisibilty = Visibility.Visible;
UCDatacontext.IniFocus();
}
然後當我做我關閉的用戶控件和處置DataContext的。現在我遇到的問題是,我似乎無法讓焦點設置正常工作,我在用戶控件中有一個Textbox,當視圖變爲可見時,我想將焦點設置爲焦點。然而,在我第一次嘗試設置焦點時,它只填充文本框並且沒有閃爍的插入符號,經過調查後,我相信這是因爲TB沒有獲得鍵盤焦點(只有邏輯焦點),但是甚至在明確設置鍵盤焦點之後,我仍然可以得到無影無蹤的脫字符號,並且只有在結核病點擊之後才能獲得焦點。我用來設置焦點的方法類似於描述的方法here。
如果在視圖中我通過在文本框的FocusSet事件中打印出來進行一些寫入調試,但它只是在第一次調用SetUserControl()時進行設置。如果我再次調用SetUserControl(),它不會執行任何操作,除非使視圖可見但不觸發焦點集事件。
下面的代碼從主窗口行:
<Grid Grid.ColumnSpan="5" Grid.RowSpan="5" Visibility="{Binding Path=UCViewVisibilty }" x:Name="UCGrid" >
<Grid.Effect>
<DropShadowEffect />
</Grid.Effect>
<View:UCView DataContext="{Binding Path=UCDatacontext}" />
</Grid>
而且用戶控件網:
<Grid >
<TextBox Uid="UCTB" localExtensions:FocusExtension.IsFocused="{Binding Path=UCTBFocus}" Height="23" HorizontalAlignment="Left" Margin="113,56,0,0" Name="UCTB" VerticalAlignment="Top" Width="165" Text="{Binding Path=UCTBContent, UpdateSourceTrigger=PropertyChanged}" GotFocus="UCTB_GotFocus" />
</Grid >
焦點設置在UserControlViewModel,和用戶控件之後被渲染設置。
問題仍然PERSI引起sts:/,由於某種原因文本框的GotFocus事件只在第一次嘗試時被調用。 – Heinrich