2016-10-14 21 views
0

以下のコードのテキストボックスでは、テキストボックスをクリックした後、またはフォーカスを当てても点滅カーソルが表示されません。この大きなコードは、おそらくそれが何らかの理由でテクスチャボックスを妨害している親要素のプロパティだと思うからですが、私はこの解決策を見つけることができないようです。誰かが助けてくれますか?テキストボックスには、クリック時またはフォーカス時に点滅するカーソルが表示されません

<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 > 

注: - 私は、テキストボックスの値をクリアしたとき、私はキャレットを入力し始める表示されますが消えます。

+0

を示しているように、それはカスタムキャレットを作成するので、それはtxtTimeのTextBoxですか?すべてのイベントハンドラは何をしていますか? tiがプレーンテキストボックスで動作するかどうか確認するためにそれらを削除しようとしましたか? – Mat

+0

キャンバスを使用している理由もわかりません – Mat

+0

@マート私はイベントハンドラを削除しようとしましたが、それでも同じ動作です。 –

答えて

1

ScaleTransformに問題があるようです。 TextBoxのサイズを小さくして元のサイズにすると、カーソルが消えます。これは、TextBoxキャレットの幅が1であり、縮小されたときにTextBoxキャレットが1より小さくなるために発生します。したがって、視覚化されません。

回避策として、最小限のサイズをデフォルトに設定して、UIのスケールアップのみを行います。

別の回避策それがここWPF TextBox Inside ViewBox loses Cursor on resize

+0

しかし、私は自由にスケールするコントロールが必要です、それを行うための他の方法はありますか? –

+0

@psyLogicまた、カスタムキャレットを作成して編集を行い、提案を追加することもできます。 –

+0

キャレットの入力を開始すると表示されますが、デスクトップの値をクリアすると消えます。 –

関連する問題