好的,我有一个带有DataTemplate的GridView,并且ItemSource设置为Binding。 GridView完全填充,我没有问题。
我的问题如下
这个想法是一个玩家攻击了另一个玩家,我希望在受攻击的玩家上启动动画,但我只能使用(发送者)访问攻击玩家。
故事板是在GridViewItem DataTemplate中定义的,如果GridViewItem是通过使用发送者来点击的话我可以访问它.Finds()但是我不能使用这个我想在没有&#t; t的GridViewItem上启动故事板被窃听了。
我有一个想法,也许故事板可以写在用于GridViewItem绑定的类中?怎么会这样呢?
或者也许使用DataTrigger,但是当我想要检查的值是和减少int时,可以使用它吗?
答案 0 :(得分:0)
使用.Resources["MyStoryboard"] as Storyboard
获取Storyboard
内定义的DataTemplate
。另外,使用ContainerFromIndex
从索引中获取项目。
这是一个代码示例
在XAML中
<DataTemplate>
<Grid Name="MyGrid">
<Grid.Resources>
<Storyboard x:Name="MyStoryboard"/>
</Grid.Resources>
....
</Grid>
</DataTemplate>
在代码背后
private void StartStoryboard(int index)
{
var MyGridViewItem = MyGridView.ContainerFromIndex(index);
Storyboard MyStoryboard = MyGridViewItem.Resources["MyStoryboard"] as Storyboard;
MyStoryboard.Begin();
}
现在,您可以随时使用StartStoryboard(index)
启动Storyboard
。
答案 1 :(得分:0)
How do I access a control inside a XAML DataTemplate?
上面的链接谈到了类似的问题,使用FindControl函数工作了一个魅力