2011-06-10 7 views
-2

après le code:Pourquoi ne pouvez-vous pas utiliser ControlTemplate?

var roomTable = from desks in context.RoomToStandartDesks 
      where desks.id_room == room.id 
      select desks.Desk; 

var tabItem = new TabItem 
      { 
      DataContext = roomTable, 
      Header = headerText, 
      }; 
if (controlTemplate == null) 
    tabItem.Content = (object)roomTable; 
else 
    tabItem.Content = new ContentControl { Template = controlTemplate }; 
tabItems.Add(tabItem); 

((ContentControl)(tabItem.Content)).Content null ==

((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate null ==

et XAML ControlTemplate:

<ControlTemplate x:Key="MyTabItemContentTemplate"> 
<StackPanel> 
    <TextBlock Text="{Binding Path=x}"/> 
    <ItemsControl ItemsSource="{Binding DataContext, Converter={StaticResource KeySimplyConvert}}"> 
     <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas Margin="10" Background="AliceBlue" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/> 
     </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Border> 
      <Border.RenderTransform> 
       <TranslateTransform X="{Binding x, Mode=TwoWay}" Y="{Binding y, Mode=TwoWay}"/> 
      </Border.RenderTransform> 
      <Managerer:TablePanel DataContext="{Binding}" /> 
      </Border> 
     </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

</StackPanel> 
</ControlTemplate> 

Pourquoi? A utiliser Silverlight 4.

+2

err ... pourquoi quoi? Qu'est-ce qui échoue? – AllenG

+0

ContentTemplate == null; Pourquoi cela pourrait-il arriver? avant je l'ai fait, presque la même chose et cela a fonctionné. – Mediator

Répondre

0

J'espère que je comprends bien que vous demandez ...

  1. Pourquoi ((ContentControl)(tabItem.Content)).Content est null et
  2. Pourquoi ((ContentControl)(((ContentControl)(tabItem)).Content)).ContentTemplate est null,

. .. après le premier bit de C#. Les réponses à la fois, je pense avoir à faire avec cette ligne de votre code:

else 
    tabItem.Content = new ContentControl { Template = controlTemplate }; 

J'ai simplifié les paranthèses ci-après, maintenant je l'espère correcte. En outre, la coulée tabItem-ContentControl pour obtenir au même Content biens juste plus difficile à lire:

  1. ((ContentControl)tabItem.Content).Content est null parce que vous ne définissez la propriété Content du nouveau ContentControl. Vous ne définissez que la propriété Template. Pour la même raison: Vous n'avez pas défini ContentTemplate, vous avez défini Template.
+0

Je ne comprends pas quoi faire – Mediator

Questions connexes