wpf缩放到textBox,当我单击textBox时,文本框无法显示光标

时间:2010-12-29 03:53:21

标签: wpf textbox cursor scaletransform

首先,我缩放(ScaleTransform)TextBox,然后鼠标点击TextBox。有时可以显示光标,有时无法显示光标。寻找解决问题的解决方案。我希望在缩放TextBox后可以显示光标。

 <Grid>
    <StackPanel>
        <TextBox Width="200"></TextBox>
        <TextBox Width="100"></TextBox>
        <TextBox Width="300"></TextBox>
        <TextBox Width="100"></TextBox>
        <TextBox Width="100"></TextBox>
        <TextBox Width="100"></TextBox>
    </StackPanel>
    <Grid.LayoutTransform>
        <ScaleTransform ScaleX="0.3" ScaleY="0.65"></ScaleTransform>
    </Grid.LayoutTransform>
</Grid>

2 个答案:

答案 0 :(得分:1)

TextBox,尤其是TextBox,在缩小时看起来会很糟糕并且表现不佳。如果您希望TextBox看起来很好并且表现良好,那么请使用FontSize来减少它,并且您的字体呈现和光标管理会更好。

答案 1 :(得分:0)

从msdn回答我发现:

我解决的最佳解决方法是在TextBox上应用逆变换,并根据变换比例更改FontSize。您可以使用Grid包装TextBox以维护它的布局。

您可以使用以下代码查看效果。此示例中的FontSize被硬编码为10.您可以使用DataBinding将其绑定到scaletransform并使用转换器来计算字体大小。

<Grid Background="AliceBlue">
<StackPanel>
<Border Height="100">
  <Canvas>
    <TextBox Canvas.Left="50" Canvas.Top="40" Width="500" Height="100" Background="Silver" Text="A Quick Red Fox Jumped Over A Lazy Brown Dog." FontSize="20"/>
    <Canvas.RenderTransform>
      <ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
    </Canvas.RenderTransform>
  </Canvas>
</Border>
<Border Height="100">
  <Canvas>
    <Grid Canvas.Left="50" Canvas.Top="40" Width="500" Height="100">
      <TextBox Background="Silver" Text="A Quick Red Fox Jumped Over A Lazy Brown Dog." FontSize="10" LayoutTransform="{Binding ElementName=scale, Path=Inverse}"/>
    </Grid>
    <Canvas.RenderTransform>
      <ScaleTransform x:Name="scale" ScaleX="0.5" ScaleY="0.5"/>
    </Canvas.RenderTransform>
  </Canvas>
</Border>

您可以在此处查看完整主题:http://social.msdn.microsoft.com/Forums/en/wpf/thread/aeaa3e28-a7da-4208-9676-771231c1a954?prof=required