15

有谁知道是否可以在 WPF Wrap 面板中输入换行符?它违背了包装面板的用途,所以我不确定它是否可能。

如果不是,是否有任何其他 WPF 控件实际上允许我在其中输入换行符并支持添加子项(我自己的自定义控件?)

4

2 回答 2

21
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>
于 2014-09-30T13:30:10.077 回答
18

这是 a 中的换行符WrapPanel

<WrapPanel>
    <TextBlock Text="&#xD;"/>
</WrapPanel>

更新

我想我知道你想问什么。如果你有一个WrapPanel按行布局的,并且你想强制它到下一行,你可以WrapPanel

 <StackPanel Orientation="Vertical">
  <StackPanel Orientation="Horizontal">
   <!-- items -->
  </StackPanel>
  <StackPanel Orientation="Horizontal">
   <!-- items -->
  </StackPanel>
  <StackPanel Orientation="Horizontal">
   <!-- items -->
  </StackPanel>
 </StackPanel>

如果要保留各个行的换行,可以WrapPanel在 vertical 中使用 s StackPanel

于 2010-08-27T18:42:19.300 回答