Существует ли ItemsControl, эквивалентный для текстового содержания?

Дельфи (иначе Object Pascal), я буду говорить о собственной версии, не.NET.

  • блоки Var!
  • Интерфейсы на языке разработаны с использованием COM в памяти - таким образом более сложный, чем говорят в C# или Java. т.е. Подсчет ссылок включил, если Вы не отключаете его явно.
  • Никакой try except finally end;
  • слишком явное Создание объекта:

    var obj: TMyObject;
    ...
    obj := TMyObject.Create;
    try
      ...
    finally
      obj.Free;
    end;
    

Вместо этого что-то как [1 112]

auto obj: TMyObject; // compiler adds the default constructor call and the destructor call in a try/finally block. 
  • хорошо, язык так хорош, я не могу действительно больше думать, таким образом, я продвигаю меня здесь: Встроенные типы, такие как строка, целое число.. или перечисления лучше имели бы методы. т.е. i.ToString вместо IntToStr(i).
6
задан Joe White 12 August 2009 в 00:33
поделиться

3 ответа

То, что вы ищете, возможно, но требует значительного количества кода. К счастью, Винсент Ван Ден Берг опубликовал в MSDN прекрасную статью, описывающую, как создавать гибкие пользовательские интерфейсы с потоковыми документами и привязкой данных , включая код!

9
ответ дан 10 December 2019 в 02:51
поделиться

Вместо использования FlowDocument вы можете использовать ItemsControl и изменить панель, используемую для отображения элементов, на WrapPanel . Это позволит вам использовать ItemsControl по своему усмотрению, но изменить семантику его отображения на WrapPanel (которая, как мне кажется, работает как FlowDocument . Вы бы сделали это это примерно так:

<ItemsControl>
    <ItemsControl.ItemsPanelTemplate>
        <WrapPanel />
    </ItemsControl.ItemsPanelTemplate>
</ItemsControl>

Вы можете установить любые свойства на внутренней WrapPanel по своему желанию.

0
ответ дан 10 December 2019 в 02:51
поделиться

Думаю, вы ищете элемент списка: http://msdn.microsoft.com/en-us/library/system.windows.documents.list.aspx

Bubblewrap указывает еще на несколько деталей. Скорее всего, вы выполните привязку к свойству ListItems и вам потребуется использовать ValueConverter для преобразования исходного списка в список типа ListItemsCollection.

Bubblewrap указывает, что это только для чтения и что ListItemsCollection имеет внутренний конструктор. Итак ...

Я думаю, что вам нужно сделать следующее:

<ContentControl Content="{Binding TheArrayOfText, Converter={StaticResource StringsToListConverter}" />

Это довольно прискорбно, но я думаю, что это сработает. Вам придется написать конвертер для создания нового объекта List и вызвать .Add ( для каждого элемента.

0
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: