Я использовал его для построения объектов, выделенных в стеке через alloca ().
бесстыдный плагин: я написал о нем здесь .
Есть несколько способов добиться этого, и вы обычно используете DataTemplateSelector
, который назначен свойству ItemsControl ItemTemplateSelector
.
Однако вы можете написать решение только для 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}">