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 № 1Use 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