1

まず、 を Zoom(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>
4

2 に答える 2

1

TextBox、特に はTextBox、縮小すると見栄えが悪く、動作も悪くなります。TextBox見栄えを良くして動作を良くしたい場合は、 を使用FontSizeしてそれを減らすと、フォントのレンダリングとカーソル管理がより適切に機能します。

于 2010-12-29T07:13:14.883 に答える
0

私が見つけたmsdnの回答から:

私が解決した最善の回避策は、TextBox に逆変換を適用し、変換スケールに対して FontSize を変更することです。TextBox を Grid でラップして、レイアウトを維持できます。

次のコードを使用して効果を確認できます。このサンプルの 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

于 2011-04-14T15:09:18.757 に答える