文本框在单击或具有焦点时不显示闪烁的光标 [英] The Textbox doesn't show the blinking cursor on clicking or when it has focus

查看:22
本文介绍了文本框在单击或具有焦点时不显示闪烁的光标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在下面代码的文本框中,即使我单击文本框或当它具有焦点时,闪烁的光标也不会显示.我发布这么大的代码是因为我认为这可能是父元素属性以某种方式干扰文本框,但我似乎无法找到解决方案.有人可以帮忙吗.

In the textboxes from the code below, the blinking cursor doesn't show even after i click the textbox or when it has focus.I'm posting this big a code because i think perhaps it's the parent element properties that are somehow interfering with the texboxes but I can't seem to find a solution for this. Can someone please help.

<Canvas Name="encounterTab" Style="{StaticResource canvasRecording}" Visibility="Hidden" Width="{DynamicResource {x:Static SystemParameters.FullPrimaryScreenWidthKey}}" FocusManager.IsFocusScope="True">
                <Grid Height="{DynamicResource {x:Static SystemParameters.FullPrimaryScreenHeightKey}}" Width="{DynamicResource {x:Static SystemParameters.FullPrimaryScreenWidthKey}}" Margin="0,0,0,0" FocusManager.IsFocusScope="True">
                    <DockPanel Style="{StaticResource screenTitleDock}" Grid.Row="0" VerticalAlignment="Top" >
                        <TextBlock Name="textBlock1"  Style="{StaticResource screenTitle}">ENCOUNTER DETAILS</TextBlock>
                    </DockPanel>
                    <Grid Style="{StaticResource gridRecording}" SizeChanged="MainGrid_SizeChanged" Name="gridEncDetails" FocusManager.IsFocusScope="True">
                        <Grid.LayoutTransform>
                            <ScaleTransform 
                        CenterX="0"
                        CenterY="0"
                        ScaleX="{Binding ElementName=myMainWindow, Path=ScaleValue}"
                        ScaleY="{Binding ElementName=myMainWindow, Path=ScaleValue}" />
                        </Grid.LayoutTransform>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="188*"></ColumnDefinition>
                            <ColumnDefinition Width="149*"></ColumnDefinition>
                            <ColumnDefinition Width="63*"></ColumnDefinition>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition ></RowDefinition>
                            <RowDefinition ></RowDefinition>
                            <RowDefinition ></RowDefinition>
                            <RowDefinition ></RowDefinition>
                            <RowDefinition></RowDefinition>
                        </Grid.RowDefinitions>

                        <Label x:Name="lblApptTime" Content="Time:" Grid.Column="0" Grid.Row="0"    />
                        <TextBox x:Name="txtTime" GotKeyboardFocus="txtApptTimeKeyBoadFocus" GotMouseCapture="txtApptTime_MouseClick" Grid.Column="1" Grid.Row="0" Width="149" LostFocus="txtApptTime_LostFocus" HorizontalAlignment="Left" MouseDoubleClick="txtApptTime_MouseDoubleClick" Margin="0,11" Height="38" GotTouchCapture="txtApptTime_GotTouchCapture" />
                        <ComboBox x:Name="ddlAmPm" VerticalContentAlignment="Center" Grid.Row="0" Grid.Column="2" Width="55" IsSynchronizedWithCurrentItem="True" Margin="0,10" HorizontalAlignment="Right" Height="38">
                            <ComboBoxItem>AM</ComboBoxItem>
                            <ComboBoxItem>PM</ComboBoxItem>
                            <ComboBox.ItemTemplate>
                                <DataTemplate>
                                    <Grid >
                                        <TextBlock Height="Auto"
                       HorizontalAlignment="Stretch"
                       VerticalAlignment="Center" />
                                    </Grid>
                                </DataTemplate>
                            </ComboBox.ItemTemplate>
                        </ComboBox>
                        <Label x:Name="lblNo" Content="No:" Grid.Column="0" Grid.Row="1" Margin="0,11" Height="38"  />
                        <TextBox x:Name="txtEncounterNumber" Grid.Column="1" Grid.Row="1"  KeyDown="txtEncounterNumber_KeyUp" TextChanged="txtEncounterNumber_TextChanged" HorizontalAlignment="Left" Width="212" Margin="0,10" Grid.ColumnSpan="2" Height="Auto" />
                        <Button x:Name="btnNext1" Grid.Row="2" Grid.ColumnSpan="3" Style="{StaticResource btnRec}" Click="btnNext1_Click" TouchUp="btnTouchNext1_Click" Margin="50,20,50,10" >
                            <Image Source="Assets/btnNext.png" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Button>
                    </Grid>
                </Grid>
</Canvas >

注意:- 当我开始输入时,插入符号出现但当我清除文本框值时消失.

推荐答案

看起来您的问题可能来自 ScaleTransform.如果 TextBox 被缩放到小于它的原始大小,它的光标就会消失.发生这种情况是因为 TextBox 插入符的 Width 为 1,当按比例缩小时,它会小于 1.所以它根本没有可视化.

It looks like you problem might comes from the ScaleTransform. If a TextBox is scaled to less then it's original size it's cursor disappears. This happens because the TextBox caret is with Width of 1 and when scaled down it becomes less then 1. So it's not visualized at all.

作为一种解决方法,将尽可能小的尺寸设为默认值,这样 UI 只会放大.

As a workaround make the minimal possible size as default so UI is only scaled up.

另一种解决方法来创建自定义插入符号,如此处所示ViewBox 内的 WPF 文本框在调整大小时丢失光标

Another workaround it to create a custom caret like it's shown here WPF TextBox Inside ViewBox loses Cursor on resize

这篇关于文本框在单击或具有焦点时不显示闪烁的光标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆