TabControl上にSPREADを配置したときフォーカス枠が不正になる場合がある
対象製品
SPREAD for WPF 1.0J
状況
修正済み
詳細
TabControlにSPREADを配置したとき、TabControlが配置されるコンテナのサイズにより、TabItem(タブ部分)のフォーカス枠がずれて表示されます。
【手順】
1. TabControl、SPREADおよびTextBoxコントロールを以下のように配置します。
◎サンプルコード(xaml)
2. プロジェクトを実行します。
3. TextBoxコントロールにフォーカスを移動し、Tabキーを押下します。
--TabItemのフォーカス枠が不正な位置に表示されます。
【手順】
1. TabControl、SPREADおよびTextBoxコントロールを以下のように配置します。
◎サンプルコード(xaml)
<Grid Height="400">
<TabControl Margin="0,25,0,0">
<TabItem Header="TabItem">
<sg:GcSpreadGrid />
</TabItem>
</TabControl>
<TextBox HorizontalAlignment="Left" Height="23" Margin="150,0,0,0" VerticalAlignment="Top" Width="120"/>
</Grid>
2. プロジェクトを実行します。
3. TextBoxコントロールにフォーカスを移動し、Tabキーを押下します。
--TabItemのフォーカス枠が不正な位置に表示されます。
回避方法
Service Pack 3(v1.0.2016.1207)で修正済みです。
Service Pack 3(v1.0.2016.1207)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
次のようにOnGotKeyboardFocusメソッドをオーバーライドすることで回避できます。
◎サンプルコード(C#)
Service Pack 3(v1.0.2016.1207)より前のバージョンでは次の回避方法が有効です。
------------------------------------------
次のようにOnGotKeyboardFocusメソッドをオーバーライドすることで回避できます。
◎サンプルコード(C#)
protected override void OnGotKeyboardFocus(KeyboardFocusChangedEventArgs e)
{
base.OnGotKeyboardFocus(e);
var layer = System.Windows.Documents.AdornerLayer.GetAdornerLayer(this.Content as UIElement);
if (layer != null)
{
this.Dispatcher.BeginInvoke(new Action<System.Windows.Documents.AdornerLayer>((l) => { l.Update(); }), System.Windows.Threading.DispatcherPriority.Render, layer);
}
}