Silverlight xaml中的StackPanel方向
我的xaml在stackPanel中遇到了一个奇怪的问题 我的stackPanel包含一个文本框和一个按钮 这应该在同一行上(如果可能,取决于文本宽度)。 问题是: 如果stackPanel具有Silverlight xaml中的StackPanel方向,silverlight,xaml,silverlight-4.0,stackpanel,Silverlight,Xaml,Silverlight 4.0,Stackpanel,我的xaml在stackPanel中遇到了一个奇怪的问题 我的stackPanel包含一个文本框和一个按钮 这应该在同一行上(如果可能,取决于文本宽度)。 问题是: 如果stackPanel具有Orientation=“Vertical”,则按钮将转到文本下方的行。 如果stackPanel具有Orientation=“Horizontal”,则该行不会执行任何换行操作,因此所有的行都将脱离我的网格 <StackPanel Name="spRemplir" Grid
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>
但是,按钮仍在下一行,同时在同一行的文本后有足够的空间
我试着去掉面板上的宽度,但是没有更多的包装
我不明白。即使在同一网格上有stackPanel,它们也不应该干扰包裹面板,对吗
谢谢。考虑使用WrapPanel代替堆栈面板:考虑使用WrapPanel代替堆栈面板:您可以从。注意:此面板不允许将项目拉伸到容器宽度
您还应该考虑删除面板的固定宽度。您可以尝试从面板上安装一个
WrapPanel
。注意:此面板不允许将项目拉伸到容器宽度
您还应该考虑删除面板的固定宽度。尝试使用网格而不是堆叠面板。StackPanel的问题在于,它们不会向可视树报告它们不在房间内。这不是一个bug,这只是它们的方式,当你需要它时,它是合适的。但除了最里面的元素外,我避免使用它们。但不要在StackPanels中使用StackPanels,因为这样会丢失文本包装/滚动,只会让元素落在页面的右侧或底部 第二,确保设置了外部容器,以限制宽度。例如,在布局根目录中,为其指定一列,并设置*的宽度,这意味着=“可用空间,但不超过” 约束外部容器后,TextBlock将正确包装
Greg尝试使用网格而不是StackPanel。StackPanel的问题在于,它们不会向可视树报告它们不在房间内。这不是一个bug,这只是它们的方式,当你需要它时,它是合适的。但除了最里面的元素外,我避免使用它们。但不要在StackPanels中使用StackPanels,因为这样会丢失文本包装/滚动,只会让元素落在页面的右侧或底部 第二,确保设置了外部容器,以限制宽度。例如,在布局根目录中,为其指定一列,并设置*的宽度,这意味着=“可用空间,但不超过” 约束外部容器后,TextBlock将正确包装
格雷格WPF?银灯?Windows Phone?Windows8?更新您的标签。问题可能是硬编码宽度od StackPanel(width=“560”)。如果它在网格中,则不必这样做,可能会导致您所描述的结果。@EliArbel您的权利。添加silverlight标签。如果我去掉了宽度,我就不会换行了。WPF?银灯?Windows Phone?Windows8?更新您的标签。问题可能是硬编码宽度od StackPanel(width=“560”)。如果它在网格中,则不必这样做,可能会导致您所描述的结果。@EliArbel您的权利。添加silverlight标签。布里:如果我去掉了宽度,我就不会换行了。很抱歉让你困惑,我忘了添加标签silverlight。很抱歉让你困惑,我忘了添加标签silverlight。好的,谢谢。我在试,但是,他和Stackpanel有什么不同?我只看到它们两个的相同属性。是的,但它使用不同的布局。它将项目一个接一个地放在一起,当没有足够的空间时,它会“断线”。确实如此。奇怪的是,他开始在半个酒吧里表演。但它是行中唯一的元素。。。我将搜索出问题所在。您应该显示更多的XAML。我将您的代码粘贴到XAML编辑器中,它可以按预期工作。我可以显示更多XAML,但需要私下讨论。我们怎么开始呢?好的,谢谢。我在试,但是,他和Stackpanel有什么不同?我只看到它们两个的相同属性。是的,但它使用不同的布局。它将项目一个接一个地放在一起,当没有足够的空间时,它会“断线”。确实如此。奇怪的是,他开始在半个酒吧里表演。但它是行中唯一的元素。。。我将搜索出问题所在。您应该显示更多的XAML。我将您的代码粘贴到XAML编辑器中,它可以按预期工作。我可以显示更多XAML,但需要私下讨论。我们如何开始呢?我的stackPanel是网格的子对象(所以我必须在其中定义一个宽度,以便进行良好的包装?)。每次定义一个网格(使用列和行定义)不是要做很多工作吗?只是问问而已。谢谢你的解释。我想我会做一些关于xaml最佳结构的“家庭作业”。谢谢你的建议,我的代码并不是按照看起来最好的方式编写的。@Zaphod是的,它有点打字,但是它给了你很好的布局,可以动态地改变。请查看我在all Silverlight:OfficeExtreme.com中创建的这个网站。我的stackPanel是网格的子项(因此我必须在其中定义一个宽度,以便进行良好的包装?)。每次定义一个网格(使用列和行定义)不是要做很多工作吗?只是问问而已。谢谢你的解释。我想我会做一些关于xaml最佳结构的“家庭作业”。谢谢你的建议,我的代码并不是按照看起来最好的方式编写的。@Zaphod是的,它有点打字,但是它给了你很好的布局,可以动态地改变。