0
votes

I'm writing a Soft Keyboard as a usercontrol in my app. The control is used for typing (through touch) on textboxes. I have set every single control/container (including the usercontrol itself) as focusable="false". I do not lose focus when clicking on the buttons (keys), but when I click on the background of the usercontrol, the focus is lost.

How can I prevent that?

XAML Code:

<UserControl x:Class="HardRock_Kiosk_PrototypeScreens.KioskKeyboard"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         Height="250" Width="800" Focusable="False" Background="#FF7F7F7F">
<Grid Focusable="False">
    <Grid.RowDefinitions>
        <RowDefinition Height="50" />
        <RowDefinition />
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal" Grid.Row="0" Focusable="False">
        <Button x:Name="HideKeyboardButton" Content="Hide" Height="30" Margin="20,0,0,0" Focusable="False" Style="{DynamicResource Button-Sketch}"/>
        <Button x:Name="PreviousButton" Content="Prev" Height="30" Margin="10,0,0,0" Focusable="False" Style="{DynamicResource Button-Sketch}"/>
        <Button x:Name="NextButton" Content="Next" Height="30"  Focusable="False" Style="{DynamicResource Button-Sketch}"/>
        <Button x:Name="PrintButton" Content="Print" Height="30" Margin="392,0,0,0" Focusable="False" Style="{DynamicResource Button-Sketch}"/>
        <Button x:Name="DoneButton" Content="Done" Height="30" Margin="10,0,0,0" Focusable="False" Style="{DynamicResource Button-Sketch}"/>
    </StackPanel>
    <Grid x:Name="KeysGrid" Grid.Row="1" Focusable="False">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="600" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid Grid.Row="0" Grid.Column="0" x:Name="LettersFirstRowGrid" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="QButton" Grid.Column="0" Content="Q" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="WButton" Grid.Column="1" Content="W" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="EButton" Grid.Column="2" Content="E" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="RButton" Grid.Column="3" Content="R" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="TButton" Grid.Column="4" Content="T" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="YButton" Grid.Column="5" Content="Y" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="UButton" Grid.Column="6" Content="U" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="IButton" Grid.Column="7" Content="I" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="OButton" Grid.Column="8" Content="O" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="PButton" Grid.Column="9" Content="P" Style="{StaticResource KeyLightGray}" />
        </Grid>
        <Grid Grid.Row="1" Grid.Column="0" x:Name="LettersSecondRowGrid" HorizontalAlignment="Center" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="AButton" Grid.Column="0" Content="A" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="SButton" Grid.Column="1" Content="S" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="DButton" Grid.Column="2" Content="D" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="FButton" Grid.Column="3" Content="F" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="GButton" Grid.Column="4" Content="G" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="HButton" Grid.Column="5" Content="H" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="JButton" Grid.Column="6" Content="J" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="KButton" Grid.Column="7" Content="K" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="LButton" Grid.Column="8" Content="L" Style="{StaticResource KeyLightGray}" />
        </Grid>
        <Grid Grid.Row="2" Grid.Column="0" x:Name="LettersThirdRowGrid" HorizontalAlignment="Center" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="86"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="86"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="DotComButton" Grid.Column="0" Content=".com" Style="{DynamicResource KeyDarkGray}" Margin="0,0,10,0" />
            <Button x:Name="ZButton" Grid.Column="1" Content="Z" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="XButton" Grid.Column="2" Content="X" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="CButton" Grid.Column="3" Content="C" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="VButton" Grid.Column="4" Content="V" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="BButton" Grid.Column="5" Content="B" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="NButton" Grid.Column="6" Content="N" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="MButton" Grid.Column="7" Content="M" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="BackSpaceButton" Grid.Column="8" Content="&lt;" Style="{DynamicResource KeyDarkGray}" Margin="10,0,0,0" />
        </Grid>
        <Grid Grid.Row="3" Grid.Column="0" x:Name="LettersFourthRowGrid" HorizontalAlignment="Center" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="360"/>
                <ColumnDefinition Width="120"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="AtButton" Grid.Column="0" Content="@" Style="{DynamicResource KeyDarkGray}" />
            <Button x:Name="DotButton" Grid.Column="1" Content="." Style="{DynamicResource KeyDarkGray}" />
            <Button x:Name="SpaceButton" Grid.Column="2" Content=" " Style="{StaticResource KeyLightGray}" />
            <Button x:Name="SendGoButton" Grid.Column="3" Content="Send/Go" Style="{DynamicResource KeyBlue}" />
        </Grid>

        <Grid Grid.Row="0" Grid.Column="1" x:Name="NumPadFirstRowGrid" Margin="15,0,0,0" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="OneButton" Grid.Column="0" Content="1" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="TwoButton" Grid.Column="1" Content="2" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="ThreeButton" Grid.Column="2" Content="3" Style="{StaticResource KeyLightGray}" />
        </Grid>
        <Grid Grid.Row="1" Grid.Column="1" x:Name="NumPadSecondRowGrid" Margin="15,0,0,0" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="FourButton" Grid.Column="0" Content="4" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="FiveButton" Grid.Column="1" Content="5" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="SizButton" Grid.Column="2" Content="6" Style="{StaticResource KeyLightGray}" />
        </Grid>
        <Grid Grid.Row="2" Grid.Column="1" x:Name="NumPadThirdRowGrid" Margin="15,0,0,0" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="60"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="SevenButton" Grid.Column="0" Content="7" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="EightButton" Grid.Column="1" Content="8" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="NineButton" Grid.Column="2" Content="9" Style="{StaticResource KeyLightGray}" />
        </Grid>
        <Grid Grid.Row="3" Grid.Column="1" x:Name="NumPadFourthRowGrid" Margin="15,0,0,0" Focusable="False">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="60"/>
                <ColumnDefinition Width="120"/>
            </Grid.ColumnDefinitions>
            <Button x:Name="ZeroButton" Grid.Column="0" Content="0" Style="{StaticResource KeyLightGray}" />
            <Button x:Name="EnterButton" Grid.Column="1" Content="Enter" Style="{DynamicResource KeyDarkGray}" />
        </Grid>
    </Grid>
</Grid>

1
did you set them in XAML or by tree recursion?Jake Berger
what Layout element you use for your control?codeSetter
Providing a small XAML snippet which reproduces your problem would be beneficial.FunnyItWorkedLastTime

1 Answers

0
votes

Apparently this is a problem with SketchFlow and it works as expected on a normal WPF application.