2013-10-02 53 views
0

我在xaml的stackPanel中出现了一个奇怪的问题。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,如果必要的话会断行,并且在同一行上有一个文本和一个按钮?

更新与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> 

但是,还是按键的下一行,则出现在同一行文本后有足够的空间。

Itried面板上取出宽度,但随后,有没有更多的包装...

我不明白。即使在同一个Grid上有stackPanel,他们也不应该打扰包装面板吗?

谢谢。

+0

WPF? Silverlight的? Windows Phone? Windows 8?更新您的标签。 –

+0

也许问题是硬编码宽度为StackPanel(宽度=“560”)。如果它在网格中,则不应该有必要,它可能会导致您所描述的内容。 –

+0

@EliArbel你的权利。添加silverlight标记。布利:如果我删除宽度,我不会休息一下。 –

回答

2

你可以尝试从Silverlight Toolkit一个WrapPanel。请注意,此面板不允许您将项目拉伸到容器宽度。

您还应该考虑移除面板的固定Width

+0

好的谢谢。我在尝试,但是,他与Stackpanel有什么不同?我在他们两个中只看到了相同的属性。 –

+0

是的,但它使用不同的布局。它将项目放在一起,当没有足够的空间时,就是“换行”。 –

+0

确实。奇怪的是,他开始展示在cantainer的一半。但它是行中唯一的元素......我将搜索出现了什么问题。 –

1

尝试使用网格而不是StackPanel。 StackPanel的问题是他们没有向Visual Tree报告他们没有空间。这不是一个错误,它只是它们的方式,当你需要时它是合适的。但是,除了最内在的元素之外,我会避开它们。但是不要在StackPanel中使用StackPanels,因为您将丢失TextWrapping/Scrolling,并且只是元素落在页面的右侧或底部。

其次,请确保您的外部容器已设置,以便宽度被限制。例如,在您的布局根目录中,为其指定一个Column,并将宽度设置为*这意味着=“可用空间,但不是更多”如果您的外部容器受到限制,则TextBlock将正确包装。

Greg

+0

那么我的stackPanel是一个网格的孩子(所以我必须在其中定义一个宽度,有一个很好的包装?)。每次定义网格(具有列和行定义)是不是很多工作?只是问问。并感谢您的解释。 –

+0

我想我会在xaml最好的结构^^上做一些“功课”。感谢您的建议我的代码并没有真正成为它看起来最好的方式。 –

+0

@Zaphod是的,它有点打字,但它给你很好的布局,会动态改变。查看我在所有Silverlight中创建的这个网站:OfficeExtreme.com –