1. ホーム
  2. .net

[解決済み] WPFのテキストボックスがStackPanelで満たされない

2022-11-19 05:19:42

質問

私は TextBox コントロールの中に StackPanel その Orientation に設定されています。 Horizontal に設定されていますが、テキストボックスが残りのStackPanelのスペースを埋めるようにすることはできません。

XAMLです。

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="180" Width="324">

    <StackPanel Background="Orange" Orientation="Horizontal" >
        <TextBlock Text="a label" Margin="5" VerticalAlignment="Center"/>
        <TextBox Height="25" HorizontalAlignment="Stretch" Width="Auto"/>
    </StackPanel>
</Window>

と、こんな感じです。

なぜそのテキストボックスはStackPanelを満たさないのでしょうか?

を使うことでより多くの制御ができることは知っています。 Grid を使用することで、より多くの制御が可能であることは分かっていますが、レイアウトについて混乱しています。

どのように解決するのですか?

私は、同じ問題を StackPanel で、その動作は "デザインによるものです" 。 StackPanel は可視領域の外側でも物を積み重ねるためのものなので、積み重ねの次元で残りのスペースを埋めることはできません。

を使用することができます。 DockPanel と共に LastChildFill に設定されています。 true に設定し、すべての非充填コントロールを Left にドッキングさせ、必要な効果をシミュレートします。

<DockPanel Background="Orange" LastChildFill="True">
    <TextBlock Text="a label" Margin="5" 
        DockPanel.Dock="Left" VerticalAlignment="Center"/>
    <TextBox Height="25" Width="Auto"/>
</DockPanel >