Предоставление WPF ItemsControl другого вида на основе того, содержит ли ItemsSource одно значение или несколько значений? - PullRequest
1 голос
/ 07 октября 2009

Существуют ли какие-либо изящные способы стилизовать / шаблонировать WPF ItemsControl по-разному, основываясь на том, содержит ли ItemsSource одно значение или несколько значений?

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

Ответы [ 2 ]

2 голосов
/ 07 октября 2009

Вы можете использовать DataTrigger в своем стиле для замены шаблона:

<Style.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=Items.Count}" Value="1">
        <Setter Property="Template">
            <Setter.Value>
                <!-- Insert Template here -->
            </Setter.Value>
        </Setter>
    </DataTrigger>
</Style.Triggers>

Вы также можете добавить единицу для значения 0, если хотите отобразить шаблон «без записей».

1 голос
/ 07 октября 2009

Вы должны использовать StyleSelector. Вот пример е.

...