Silverlight / Blend Datatrigger / EventTrigger СТРАННЫЙ выпуск - PullRequest
2 голосов
/ 26 января 2011

Мой usercontrol содержит 3000 NewDotControls в элементе управления. ControlTemplate для NewDotControl указывается в стиле, который определяет визуальные состояния, и существует триггер событий, который вызывает GotoStateAction для события Loaded.

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

Только около 445 из 3000 NewDotControls переходят в состояние «Выбрано», как определено EventTrigger, тогда как остальные NewDotControls не . То же самое происходит, когда я использую DataTriggers, которые связаны с ViewModel. Тот же 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 NewDotControls отвечают на DataTriggers / GotoStateAction. Если я подключаю команды к элементу управления, команды выполняют и изменяют свойства ViewModel и запускают события PropertyChanged, но все же действие DataTrigger / GotoStateAction не происходит.

Чего мне не хватать? Существует ли ограничение на количество элементов в элементе управления, которое может быть связано с данными? Или есть проблема, потому что это в ControlTemplate? Почему это работает в WPF, а не в Silverlight?

Спасибо !!! Раджеш

...