Silverlight / Blend Datatrigger / EventTrigger STRANGE问题

时间:2011-01-25 22:55:20

标签: silverlight blend datatrigger eventtrigger visualstates

我的usercontrol在itemscontrol中包含3000个NewDotControls。 ControlDmplate for NewDotControl以定义visualstates的样式指定,并且有一个eventtrigger在Loaded事件上调用GotoStateAction。

<Controls:NewDotControl Style="{StaticResource MyDotStyle}"/>

3000个NewDotControl中的445个进入EventTrigger定义的“Selected”状态,而NewDotControls 的其余部分。当我使用绑定到ViewModel的DataTriggers时也会发生同样的情况。相同的xaml / code / app在WPF中工作。

<Style x:Key="MyDotStyle" TargetType="Control">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Control">
                        <Viewbox x:Name="viewbox" RenderTransformOrigin="0.5,0.5"
                                 >
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="SelectionStates">
                                    <VisualState x:Name="UnSelected">
                                    </VisualState>
                                    <VisualState x:Name="Selected">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.StrokeThickness)" Storyboard.TargetName="InnerEllipse" d:IsOptimized="True">
                                                <EasingDoubleKeyFrame KeyTime="0" Value="2"/>
                                                <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="Loaded">
                                    <ei:GoToStateAction StateName="Selected"/>
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                            <Ellipse x:Name="InnerEllipse" Stroke="Red" StrokeThickness="0" RenderTransformOrigin="0.5,0.5"/>
                        </Viewbox>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

为什么DataTriggers / EventTriggers / GotoStateAction不适用于ItemsControl中的所有控件?

如果我删除了初始的Loaded EventTrigger,大约775到800个NewDotControl会响应DataTriggers / GotoStateAction。如果我将Commands连接到控件,那么命令会执行并修改ViewModel属性并触发PropertyChanged事件,但仍然不会发生DataTrigger / GotoStateAction。

我能错过什么? itemscontrol中可以数据绑定的项目数量是否有限制?或者是否存在问题,因为这是在ControlTemplate中?为什么这在WPF中有效,而在Silverlight中无效?

谢谢! 拉杰什

0 个答案:

没有答案