有人知道在WPF Wrap面板中是否可以输入换行符吗?这与Wrap面板的设计初衷相违背,所以我不确定是否可能。
如果不行,是否有其他WPF控件可以允许我输入换行符并支持添加子元素(我的自定义控件)?
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>
这是WrapPanel
中的换行符:
<WrapPanel>
<TextBlock Text="
"/>
</WrapPanel>
我想我已经理解了你想要问的内容。如果您有一个按行布局的WrapPanel
,并且您想强制它进入下一行,您可以将单个WrapPanel
替换为:
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
<StackPanel Orientation="Horizontal">
<!-- items -->
</StackPanel>
</StackPanel>
如果您想保留单个行的换行,可以在垂直的 StackPanel
里使用 WrapPanel
。
wrapPanel.children.add(element)
。然而,如果我为每个换行符创建一个新的stackpanel
,我必须将wrapPanel/stackPanel
更改为stackPanel2
。是否有一种方法可以将元素添加到最新的面板中? - Dominic KWrapPanel latestPanel = new WrapPanel();
每次创建新的 StackPanel
或 WrapPanel
时,将其分配给 latestPanel
,然后向其中添加子元素。 - Jay