0

xaml の stackPanel で奇妙な問題が発生しました。

私のstackPanelには、テキストボックスとボタンが含まれています。

これは同じ行にある必要があります (可能であれば、テキストの幅によって異なります)。問題は :

stackPanel に がある場合Orientation="Vertical"、ボタンはテキストの下の行に移動します。stackPanel に がある場合Orientation="Horizontal"、行は改行を行わないため、すべての行がグリッドから外れます。

<StackPanel Name="spRemplir"
            Grid.Row="2"
            Grid.ColumnSpan="6"
            Width="560"
            Margin="5,5,5,5"
            Orientation="Horizontal"
            VerticalAlignment="Center">
 <TextBlock FontWeight="Bold"
            Text={Binding Text}
            TextWrapping="Wrap"/>
 <Button Name="btRemplir"
         Margin="5,0,0,0"
         Width="150"
         Content="Remplir"/>
</StackPanel>

必要に応じて行を分割し、同じ行にテキストとボタンを配置するstackPanelを取得するにはどうすればよいですか?

Eli Arbel のおかげで Wrapanel で更新:

 <toolkit:WrapPanel  Name="spRemplir"
                     Grid.Row="2"
                     Grid.ColumnSpan="6"
                     Margin="5,5,5,5"
                     Width="560"
                     Orientation="Horizontal">
   <TextBlock FontWeight="Bold"
              Text={Binding Text}
              TextWrapping="Wrap"/>
   <Button Name="btRemplir"
           Content="Remplir"/>
</toolkit:WrapPanel>

ただし、ボタンはまだ次の行にありますが、同じ行のテキストの後に十分なスペースがあります。

パネルの幅を削除しようとしましたが、ラッピングがなくなりました...

理解できない。同じ Grid に stackPanel があっても、ラップ パネルを邪魔してはいけませんよね?

ありがとうございました。

4

3 に答える 3

2

Silverlight ToolkitWrapPanelから試すことができます。このパネルでは、アイテムをコンテナーの幅に引き伸ばすことができないことに注意してください。

Widthまた、パネルの固定を取り外すことも検討する必要があります。

于 2013-10-02T10:12:36.367 に答える
1

StackPanel の代わりに Grid を使用してみてください。StackPanel の問題は、Visual Tree に空きがないことを報告しないことです。これはバグではありません。これはまさにその通りであり、必要なときに適切です。しかし、私は最も内側の要素を除いてそれらを避けます。ただし、TextWrapping/Scrolling が失われ、要素がページの右または下に落ちるだけなので、StackPanels に StackPanels を含めないでください。

次に、幅が制限されるように外側のコンテナーが設定されていることを確認します。たとえば、レイアウト ルートで 1 つの列を指定し、幅を * に設定します。これは、「利用可能なスペースですが、それ以上ではありません」という意味です。

外側のコンテナーを制約すると、TextBlock が適切にラップされます。

グレッグ

于 2013-10-02T17:42:22.670 に答える
0

スタック パネルの代わりに WrapPanel の使用を検討してください: http://wpftutorial.net/WrapPanel.html

于 2013-10-02T10:05:53.350 に答える