2015-09-28 6 views
1

У меня есть следующие UserControl для определения моего общего управления макетом:ItemTemplate определение в другой UserControl

<UserControl> 
    <DockPanel LastChildFill="False"> 
     <ListView DockPanel.Dock="Left" 
        ItemsSource="{Binding FoundResults}" 
        SelectedItem="{Binding SelectedItem}" 
        ItemTemplate="{DynamicResource FoundResultsStyle}"/> 
     <ContentControl DockPanel.Dock="Top" 
         Name="WinSock" 
         Content="{Binding ElementName=BaseWindowUserControl, Path=SpecificView}" /> 
     <StatusBar DockPanel.Dock="Bottom"> 
      <StatusBarItem Content="{Binding StatusBarText, Mode=OneWay}" /> 
     </StatusBar> 
    </DockPanel> 
</UserControl> 

Каждое окно должно иметь ListView на левой стороне, как вы можете видеть.

Мне нужен способ определения ItemTemplate в конкретном userControl.

Человек-UserControl:

<UserControl.Resources> 
    <DataTemplate x:Key="FoundResultsStyle" DataType="{x:Type Pocos:Person}"> 
     <StackPanel> 
      <TextBlock Text="{Binding Lastname}"/> 
      <TextBlock Text="{Binding Firstname}"/> 
     </StackPanel> 
    </DataTemplate> 
</UserControl.Resources> 

элемент управления ListView не использует мой шаблон, который я определил в моей 'конкретной' UserControl. Есть ли способ достичь этого?

Спасибо заранее!

ответ

1

Можете ли вы сделать что-то подобное, чтобы DataType, по мере его изменения, выберет правильный шаблон?

<UserControl> 

    <UserControl.Resources> 
     <DataTemplate DataType="{x:Type Pocos:Person}"> 
      ... 
     </DataTemplate> 
     <DataTemplate DataType"{x:Type Pocos:Dog}"> 
      ... 
     </DataTemplate> 
    </UserControl.Resources> 


    <DockPanel LastChildFill="False"> 
     <ListView 
      DockPanel.Dock="Left" 
      ItemsSource="{Binding FoundResults}" 
      SelectedItem="{Binding SelectedItem}"/> 
     <ContentControl 
      DockPanel.Dock="Top" 
      Name="WinSock" 
      Content="{Binding ElementName=BaseWindowUserControl, Path=SpecificView}" /> 
     <StatusBar DockPanel.Dock="Bottom"> 
      <StatusBarItem Content="{Binding StatusBarText, Mode=OneWay}" /> 
     </StatusBar> 
    </DockPanel> 

</UserControl>