/ / Como posso especificar vários DataTemplate em windows.resources para uso por um ContentControl - wpf, xaml, datatemplate, contentcontrol

Como posso especificar vários DataTemplate em windows.resources para uso por um ContentControl - wpf, xaml, datatemplate, contentcontrol

Como posso especificar vários DataTemplate em windows.resources para uso por um ContentControl? Meu código:

<Window.Resources>
<DataTemplate x:Key="CustomerTemplate" DataType="{x:Type local:Customer}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding Occupation}"/>
<TextBlock Text=")"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="PersonTemplate" DataType="{x:Type local:Person}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text=" - "/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
</DataTemplate>
</Window.Resources>

Muito obrigado!

Respostas:

1 para resposta № 1

Use DataTemplateSelector para retornar o Datatemplate que você deseja aplicar.

<ContentControl ContentTemplateSelector="{StaticResource MyTemplateSelector}"/>

aqui MYtemplateselector é DataTemplateSelector, no método Select () do seletor você pode verificar a propriedade associada ao contentcontrol e retornar o Datatemplate correspondente.

obrigado


0 para resposta № 2

Remover x:Key a partir de DataTemplate e tente isto:

<ContentControl Name="CustomerContentControl">
<local:Customer />
</ContentControl>

<ContentControl Name="PersonContentControl">
<local:Person />
</ContentControl>

Neste artigo, Josh Smith show, como obter acesso aos elementos que estão no DataTemplate:

Como usar o FindName com um ContentControl