Подтвердить что ты не робот

Добавление строки/новой строки в панель WPF Wrap Panel

Кто-нибудь знает, возможно ли вообще ввести разрыв строки в панели переноса WPF? Это идет вразрез с тем, для чего предназначена оберточная панель, поэтому я не уверен, если это возможно.

И если это не так, есть ли другой элемент управления WPF, который фактически позволяет мне вводить в него разрыв строки и поддерживает добавление дочерних элементов (мои собственные пользовательские элементы управления?)

4b9b3361

Ответ 1

Это разрыв строки в WrapPanel:

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

Update

Думаю, я понял, что вы пытаетесь спросить. Если у вас есть WrapPanel, который выкладывается по строке, и вы хотите принудительно выполнить его в следующей строке, вы можете заменить одиночный WrapPanel на

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

Если вы хотите сохранить обертку отдельных строк, вы можете использовать WrapPanel внутри вертикального StackPanel.

Ответ 2

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>