Условное связывание ItemsControl.ItemTemplate

Я использовал его для построения объектов, выделенных в стеке через alloca ().

бесстыдный плагин: я написал о нем здесь .

0
задан JCode 21 February 2019 в 19:38
поделиться

1 ответ

Есть несколько способов добиться этого, и вы обычно используете DataTemplateSelector, который назначен свойству ItemsControl Item​Template​Selector.

Однако вы можете написать решение только для XAML с DataTrigger в ItemContainerStyle ItemsControl:

<ItemsControl ItemsSource="{Binding Messages}">
    <ItemsControl.ItemContainerStyle>
        <Style TargetType="ContentPresenter">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Text="{Binding Name}"/>
                            <TextBlock Text="{Binding Text}"/>
                        </StackPanel>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsImage}" Value="True">
                    <Setter Property="ContentTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <Image Source="{Binding Image}"/>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>

Обратите внимание, что вам, возможно, не нужно иметь свойство IsImage. DataTrigger также может проверить свойство Image для null:

<DataTrigger Binding="{Binding Image}" Value="{x:Null}">
0
ответ дан Clemens 21 February 2019 в 19:38
поделиться
Другие вопросы по тегам:

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