2014-12-31 10 views
6

Mam następujący Template dla mojego ButtonNazwa nie może być znaleziony w zakresie nazwą „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> 

Problem jest, że col1 nie jest odebrany przez Storyboard.TargetName="col1". Otrzymuję błąd:

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'.

myślę, że może to mieć związek z faktem, że używam Items Control ... Myślałem że col1 będzie starał się znaleźć w żadnym zawierające elementy. Nie jestem pewien, jak rozwiązać ten problem.

Każda pomoc będzie bardzo ceniona!

+0

mógłbyś kod pocztowy dla 'GridLengthAnimation'? – Abhishek

Odpowiedz

11

problem jest rzeczywiście spowodowane przez ItemsControl który sprawia Button i jego zasobów w innym zakresie.

prosty fix byłoby, zamiast korzystania Storyboard.TargetName użyć Storyboard.Targetwiążące zamiast coś takiego -

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

0

Spróbuj użyć X: Nazwa zamiast Nazwa

<ColumnDefinition Name="col1" Width="{Binding ElementName=root, Path=DataContext.gla.LeftGridWidth}" /> 
Powiązane problemy