12

グリッド内に TextBox を作成して利用可能なスペースに拡張するための適切なソリューションが必要ですが、その中のテキストの長さに応じて拡張することはできません。

私が見つけたほとんどの解決策は、ダミーの境界線を作成し、その ActualWidth にバインドすることですが、私にとってはハッキーな解決策です。border-solution には、境界線にも小さなマージンを設定する必要がありますが、これはまったく良くありません。低く設定すると、UI が非常に奇妙な動作をします。この解決策は好きではありません。もっと良いものがあるはずですか?私が望むのは、テキストボックスがその内容で拡張されないようにすることだけです。そんなに難しくないはずです。これを行う方法を教えてください。

編集:

私が気づいた奇妙なことの1つは、次のコードが境界線を必要以上に大きくしていることです:

<Grid>
  <Border Name="dummy1" Background="Red" />
  <TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" />
</Grid>

境界線とテキストボックスの順序を置き換えると、境界線がテキストボックスにうまく収まるようになりますが、必要なのは反対です。前に述べたように、Margin (境界線上) を少なくとも 0.5 に設定すると機能しますが、結果として UI が少しぴくぴく動きます。

4

3 に答える 3

4

DockPanel を使用して、使用可能なスペースに拡張しました。Margin も設定する必要があります。

<DockPanel>
   <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" />
</DockPanel>
于 2014-12-17T17:45:25.643 に答える
2

Horizo​​ntalAlignment=Stretch は役に立ちませんか? AFAIK グリッド パネルは、水平方向の配置が Stretch に設定されている場合、子要素をセル内の使用可能なスペースに引き伸ばします。

于 2010-12-06T10:18:45.100 に答える
1

この問題を解決する方法を見つけましたか?

Border-problem への回答: TextBox-Object を境界線の内側に配置する必要があります。

    <Border Background="Red" Padding="3">
        <Button Content="Button" />
    </Border>
于 2011-12-26T17:38:39.643 に答える