2010-12-13 43 views
0

J'ai du mal à accéder à ma Grid (listBoxGrid) à partir du ContentControl. Toute aide ou pointeurs serait génial!WPF Contrôle d'accès dans ContentControl

Merci Ryan

<Style x:Key="ccTemplate" TargetType="{x:Type ContentControl}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ContentControl}"> 
       <Grid x:Name="listBoxGrid" TextOptions.TextFormattingMode="Display"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="200*"/> 
         <RowDefinition Height="60" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition Width="80" /> 
         <ColumnDefinition/> 
        </Grid.ColumnDefinitions> 
        <Grid Grid.ColumnSpan="6" > 
         <ContentPresenter /> 
        </Grid> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

<Style x:Key="{x:Type control:ListBoxControl}" TargetType="{x:Type control:ListBoxControl}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <ContentControl Style="{StaticResource ccTemplate}" x:Name="cc"> 
        <telerikNavigation:RadTreeView 
    Name="mainList" 
    ItemsSource="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ItemsSource}" 
          ItemTemplate="{DynamicResource MainDataTemplate}" 
          ItemContainerStyle="{DynamicResource MainStyle}" 
    MinWidth="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=MinWidth}" 
    ScrollViewer.HorizontalScrollBarVisibility="Auto" 
    BorderBrush="#FF00569F" 
          Background="{DynamicResource ListItemBackground}" 
    BorderThickness="1" 
          SelectionMode="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectionMode, FallbackValue=Single}" 
          IsDragDropEnabled="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsDragDropEnabled, FallbackValue=False}" 
          IsDropPreviewLineEnabled="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=IsDropPreviewLineEnabled, FallbackValue=True}" 
          AllowDrop="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=AllowDrop, FallbackValue=True}" 
    > 
        </telerikNavigation:RadTreeView> 
       </ContentControl> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

J'ai essayé

Grid myGrid = (Grid)Template.FindName("listBoxGrid", this); 

Mais cela ne semble pas fonctionner.

Répondre

2

Vous ne pouvez accéder aux pièces de modèle que dans la méthode OnApplyTemplate() en utilisant GetTemplateChild ("NomPart").

+0

Dans le remplacement OnApplyTemplate, j'ai essayé Grid myGrid = GetTemplateChild ("listBoxGrid") en tant que Grid; et encore myGrid est nul. – Ryan

+0

En fait, juste découvert que ce que j'ai écrit s'applique strictement à Silverlight seulement, dans WPF, vous devriez être en mesure d'utiliser Template.FindName(), donc votre problème est ailleurs. Avez-vous essayé d'appeler la méthode dans la classe d'extension de ContentControl? – dain

+0

Découvrez mon petit exemple pour voir mon problème. Si vous aimez :) http://www.vbninja.com/XAMLGridError.zip – Ryan