Adding a linebreak/new line to a WPF Wrap Panel
public class NewLine : FrameworkElement
{
public NewLine()
{
Height = 0;
var binding = new Binding
{
RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(WrapPanel), 1),
Path = new PropertyPath("ActualWidth")
};
BindingOperations.SetBinding(this, WidthProperty, binding);
}
}
<WrapPanel>
<TextBox Text="Text1"/>
<TextBox Text="Text2"/>
<my:NewLine/>
<TextBox Text="Text3"/>
<TextBox Text="Text4"/>
</WrapPanel>
This is a line break in a WrapPanel
:
<WrapPanel>
<TextBlock Text="
"/>
</WrapPanel>
Update
I think I figured out what you're trying to ask. If you have a WrapPanel
that is laying out by row, and you want to force it to the next row, you can replace the single WrapPanel
with
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
</StackPanel>
If you want to preserve wrapping of individual rows, you can use WrapPanel
s inside the vertical StackPanel
.