WPF: имитация автоматического разделения TextBlock между контентом - PullRequest
0 голосов
/ 11 ноября 2010

Я заметил, что размещение TextBlocks внутри другого TextBlock автоматически дает им некоторый промежуток между ними.Я хотел бы использовать это поведение для пользовательского ItemsControl.Я хочу, чтобы содержимое этого ItemsControl автоматически получало определенное количество пикселей между ними, но только между последним элементом, а не перед ним.

(Правка)

<TextBlock>
  <TextBlock Text="A" />
  <TextBlock Text="B" />
  <TextBlock Text="C" />
</TextBlock>

givese: «ABC», а не «ABC»

<ItemsControl>
  <Button Content="A" />
  <Button Content="B" />
  <Button Content="C" />
</ItemsControl>

дает три плотно упакованных кнопки, но я хочу, чтобы вокруг кнопки B было поле вокруг, т. Е. Расстояние между каждой кнопкой или что-либо внутри этого ItemsControl.Я не хочу вручную устанавливать поля.

1 Ответ

1 голос
/ 11 ноября 2010

Я сам нашел решение этой проблемы. Хитрость заключается в том, чтобы выяснить, является ли элемент в элементе управления первым или последним, и установить поле в стиле в соответствии с этим. В itemscontrol есть присоединенное свойство AlternationIndex, которое можно использовать для этого. Если установить для AlternationCount значение 9999, мы получим AlternationIndex таким же, как и обычный индекс (до 9999), а затем можем установить поле для первого значения (AlternationIndex == 0) на другое значение, отличное от поля по умолчанию. Проблема решена.

...