首先,我缩放(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>
答案 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