C# 在';的名称范围中找不到名称;System.Windows.Controls.Button';
我的C# 在';的名称范围中找不到名称;System.Windows.Controls.Button';,c#,wpf,storyboard,C#,Wpf,Storyboard,我的按钮有以下模板 <Window.Resources> <DataTemplate x:Key="ItemTemplate"> <DockPanel Width="Auto"> <Button DockPanel.Dock="Top"> <Button.Template>
按钮有以下模板
<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>
...
...
问题是col1
没有被故事板拾取。TargetName=“col1”
。我收到错误消息:
PresentationFramework.dll中发生“System.InvalidOperationException”类型的未处理异常
其他信息:“System.Windows.Controls.Button”的名称范围中找不到“col1”名称。
我想这可能与我正在使用项控件
有关。。。我认为col1
将尝试在任何包含元素中找到。我不知道如何解决这个问题
任何帮助都将不胜感激 问题确实是由
ItemsControl
引起的,它使按钮及其资源处于不同的范围内
一个简单的修复方法是,使用故事板.TargetName
,而不是使用故事板.Target
绑定,类似这样-
Storyboard.Target=“{Binding ElementName=col1}”
您可以发布GridLengthAnimation
的代码吗?