11

だから私はHTMLの観点からWPFに来ています。

TextBox次のようにウィンドウに配置したいだけです:

<Grid>
    <TextBox Name="theName" />
</Grid>

TextBox巨大で、ウィンドウ全体を覆っていることがわかりました。(!)

Heightわかりました、それは私が望むものではありませんが、私は知ってWidthいて柔軟であるべきなので、正確なサイズを定義したくないので、試してみます:

<TextBox Name="theName" Width="Auto" Height="Auto"/>

同じこと。だから私は試します:

<TextBox Name="theName" 
    HorizontalAlignment="Stretch" 
    VerticalAlignment="Stretch"/>

同じこと。したがって、サイズをハードコーディングするだけです。

<TextBox Name="theName" Width="100" Height="20"/>

私が知っていることは、WPF での良いプログラミング方法ではありません。

TextBoxでは、 「使用されているフォント サイズのデフォルト サイズを表示する」にはどうすればよいでしょうか。

4

4 に答える 4

11

Bryan の例をもう少し先に進めることができます。伸縮しない特定の配置を指定し、特定のサイズを超えて拡大しないように TextBox をさらに制限します。例えば:

<Grid x:Name="LayoutRoot">
        <TextBox HorizontalAlignment="Left" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap" 
        MinWidth="15" MinHeight="20" MaxWidth="500" MaxHeight="50"/>
</Grid>

グリッド内に行/列を設定し、さまざまな方法でそれらを制約することで、さらに進めることができます。あなたは HTML のバックグラウンドを持っているので、テーブルを使用してレイアウトを制御するようなものだと考えてください。他のコンテナ オブジェクト (つまり、StackPanels、WrapPanels、他の Grids など) をネストすることもできることに注意してください。

XAML と WPF/Silverlight コントロールの課題は、それらが非常に柔軟であるため、すべてのオプションとそれらがレイアウトに与える影響を把握する必要があることです。

幸運を。私は今、これとまったく同じことを経験しています。

于 2009-02-02T14:48:20.537 に答える
6

別の容器を使用してください。Grid は常に子コントロールをストレッチして、グリッド セルを埋めます。

たとえば、コントロールを一方向にのみ伸ばすスタックパネルを使用できます。

于 2009-02-02T13:57:25.490 に答える
4

Stefanが述べたように別のパネルを使用することに加えて、TextBoxにStretchではない配置を与えることができます。例えば

<TextBox Name="theName" HorizontalAlignment="Left" VerticalAlignment="Top"/>
于 2009-02-02T14:37:25.847 に答える
1

WPF のサイズはピクセルではなく、1/96 インチの「デバイスに依存しないピクセル」であるため、現在の通常の DPI 設定では、1:1 でピクセルにマップされます。

ただし、プログラムを高 DPI モードで実行すると、TextBox は DPI (およびフォント) と共に大きくなります。

したがって、ハードコーディングされたサイズを設定することはそれほど悪くありません。

それ以外は、「Stretch」ではない Horizo​​ntalAlignment と VerticalAlignment のみを使用できます。これにより、TextBox のサイズがコンテンツに合わせて調整されますが、空の TextBox は小さくなります。

VerticalAlignment を "Center"、"Top"、または "Bottom" に設定して、約 1 行の自動高さを取得し (本当に小さなフォントの問題を回避するために MinHeight 設定によってバックアップされる場合があります)、次に Width を設定して TextBox の幅が変わらないようにすることができます。ユーザーが入力すると変化します。

于 2009-02-02T15:38:00.950 に答える