2

Blend 4 で Silverlight 4 を使用しています。

いくつかの TextBoxes と Button を含む (水平) スタックパネルがあります。stackpanel は、コンテンツが使用するサイズに拡大するように設定されています。TextBoxes もオートサイズになっています。

テキストボックスにテキストを追加すると、テキストボックスのサイズが大きくなり、スタックパネルも大きくなります。ここまでは順調ですね。

テキストボックスからテキストを削除すると、テキストボックスのサイズは縮小しますが (例外として)、スタックパネルのサイズは縮小しません。

コンテンツ (テキストボックス) が小さくなったときに、スタックパネルのサイズを変更するトリックはありますか?

前もってありがとう、フランク

UserControl の XAML は次のとおりです。

<Grid x:Name="LayoutRoot">
  <StackPanel x:Name="StackPanelBorder" Orientation="Horizontal">
    <TextBox x:Name="TextBoxCharacteristicName" TextWrapping="Wrap" Text="Tex">
        </TextBox>
    <TextBox x:Name="TextBoxSep" TextWrapping="Wrap" Text="=" IsReadOnly="True">
        </TextBox>
    <Button x:Name="ButtonRemove" Content="-" Click="ButtonAddOrRemove_Click">
        </Button>
  </StackPanel>
</Grid>
4

4 に答える 4

1

StackPanel をその中の項目とともに水平方向にサイズ変更する場合は、Horizo​​ntalAlignment をデフォルト値の "Stretch" から別の値に変更する必要があります。

デフォルトでは、Horizo​​ntalAlignment が伸縮するように設定されているため、stackpanel はその親コン​​トロールのスペース全体を埋めるように伸縮します。これにより、サイズが大きくなったり小さくなったりするのが難しくなります。

Horizo​​ntalAlignment を「Left」、「Right」、または「Center」に設定します。その場合、stackpanel はその中のアイテムと同じ幅になります。ただし、スタックパネルは親コントロール内のその位置にドッキングするため、賢明に選択してください。

<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">

注: これで問題が解決しない場合は、StackPanel ではなく親コントロールに問題があります。

Horizo​​ntalAlignment の MSDN Web サイト

于 2010-06-22T21:58:02.420 に答える
0

これには a を使用する方がよいでしょうGrid。3 つの自動列を作成するだけGridで、コンテンツに合わせてサイズが調整されます。

<Grid x:Name="LayoutRoot">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <TextBox x:Name="TextBoxCharacteristicName" TextWrapping="Wrap" Text="Tex" Grid.Column="0"/>
    <TextBox x:Name="TextBoxSep" TextWrapping="Wrap" Text="=" IsReadOnly="True" Grid.Column="1"/>
    <Button x:Name="ButtonRemove" Content="-" Click="ButtonAddOrRemove_Click" Grid.Column="2"/>
</Grid>

ほとんどの場合、Grid. StackPanel は便利なコントロールですが、使いすぎていると感じることがよくあります。

于 2010-06-22T16:05:28.053 に答える
-2

次のようなものが必要です:

<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">

また、必要でない限り、伸びるテキストボックスを持つことは良い考えではないと思います。伸びないように、テキストボックスの幅を指定する必要があります。

また、上記の解決策が機能しない場合は、xaml を投稿して、ドキュメントの概要を確認できるようにする必要があります。

于 2010-06-22T15:45:17.893 に答える