У меня есть интересная проблема, которую я пытался решить. В основном у меня есть элемент управления элементами, который использует WrapPanel
, так как это ItemsPanel
, чтобы имитировать абзац, построенный из нескольких связанных строк. Однако есть моменты, когда мне нужно заставить перерыв, например, когда я начинаю новый абзац, однако внесение перерыва в TextBlock
DateTemplate
фактически не помещает перерыв в родительскую панель обертки. Вот код:Принудительный разрыв элемента управления с шаблоном панели обертывания
<ItemsControl ItemsSource="{Binding Fragments}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock
TextWrapping="Wrap"
Text="{Binding}"/> <!--If this text has a break it won't
propagate that break to the wrap panel,
but instead just in this text block which
causes the formatting to look wrong-->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Вот простое определение фрагментов, которые будут показывать, что я говорю:
Fragments = new ObservableCollection<string>();
Fragments.Add("This is");
Fragments.Add("the first line, ");
Fragments.Add("it is very long and will drift to the ");
Fragments.Add("second line naturally since it is controlled by a wrap panel");
Fragments.Add("\n\r This I want to force to the line below where the line above ends");
Fragments.Add("rapid \n\r new \n\r lines");
Я хотел бы, чтобы течь как пункты, которые просто продолжайте конкатенировать, но почитайте ручные разрывы, когда они запущены. Например:
This is the first line, it is very long and will drift to the second line naturally since it is controlled by a wrap panel. This I want to force to the line below where the line above ends. rapid new lines
Есть ли какой-либо причине вы не конкатенации строк, а затем связывая его с помощью простого текстового поля? – Kenneth
Есть ли причина, по которой вы не связываете строки, а затем привязываете ее к простому текстовому полю? – Kenneth
от «Break» вы имеете в виду «NewLine»? –