2014-12-31 12 views
6

ho il seguente Template per il mio Buttonnome non può essere trovata nel nome campo di applicazione del 'System.Windows.Controls.Button'

<Window.Resources> 
    <DataTemplate x:Key="ItemTemplate"> 
     <DockPanel Width="Auto"> 
      <Button DockPanel.Dock="Top">           
       <Button.Template> 
        <ControlTemplate > 
         <Image Source="{Binding image}"/> 
        </ControlTemplate> 
       </Button.Template>      
       <Button.Triggers> 
        <EventTrigger RoutedEvent="Button.Click"> 
         <BeginStoryboard> 
          <Storyboard> 
           <local:GridLengthAnimation 
            Storyboard.TargetName="col1" 
            Storyboard.TargetProperty="Width" 
            LeftGridWidth="*" RightGridWidth="1*" Duration="0:0:2"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Button.Triggers> 
      </Button> 
     </DockPanel> 
    </DataTemplate> 
</Window.Resources> 

<Grid> 
    ... 
    ... 
    <Grid Grid.Row="2" > 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition Name="col1" Width="{Binding ElementName=root, Path=DataContext.gla.LeftGridWidth}" /> 
      <ColumnDefinition Name="col2" Width="{Binding ElementName=root, Path=DataContext.gla.RightGridWidth}" /> 
     </Grid.ColumnDefinitions> 

     <Grid x:Name="LeftGrid" Grid.Row="2" Grid.Column="0" > 
       <Border BorderThickness="1" BorderBrush="Red"> 
        <ItemsControl ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding ElementName=root, Path=DataContext._movies}"> 
         <ItemsControl.ItemsPanel> 
          <ItemsPanelTemplate> 
           <UniformGrid Columns="5"/> 
          </ItemsPanelTemplate> 
         </ItemsControl.ItemsPanel> 
        </ItemsControl> 
       </Border> 
     </Grid> 
    </Grid> 
</Grid> 

Il problema è che non è col1 essere raccolti da Storyboard.TargetName="col1". Ricevo l'errore:

An unhandled exception of type 'System.InvalidOperationException' occurred in PresentationFramework.dll

Additional information: 'col1' name cannot be found in the name scope of 'System.Windows.Controls.Button'.

penso che possa avere a che fare con il fatto che sto usando Items Control ... Ho pensato che sarebbe stato col1 cercato di essere trovato in qualsiasi contenenti elementi. Non sono sicuro di come risolvere questo problema.

Qualsiasi aiuto sarebbe molto apprezzato!

+0

Potrebbe inserire il codice per 'GridLengthAnimation'? – Abhishek

risposta

11

Il problema è causato proprio dalla ItemsControl che rende le Button e le sue risorse in un ambito diverso.

Una soluzione semplice sarebbe, invece di utilizzare Storyboard.TargetName, utilizzare Storyboard.Targetvincolante invece, qualcosa di simile -

Storyboard.Target="{Binding ElementName=col1}"

0

Provare a utilizzare x: Nome invece di Nome in

<ColumnDefinition Name="col1" Width="{Binding ElementName=root, Path=DataContext.gla.LeftGridWidth}" /> 
Problemi correlati