Не удается найти цель триггера "stateBrush" - PullRequest
0 голосов
/ 27 августа 2009

Что не так со следующим ControlTemplate, почему он не может найти именованную кисть? Я всегда получаю сообщение об ошибке. Не удается найти цель триггера «stateBrush». В моем шаблоне я начинаю анимировать фон, когда состояние меняется на WaitForActive, и я хочу установить его зеленым, когда состояние меняется на Active. Довольно просто Мой подход как-то несовершенен?

Также действительно необходимо удалить старую раскадровку при изменении состояния. После многих изменений состояния не будет ли создано много раскадровок?

<Style TargetType="{x:Type local:GateControl}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type local:GateControl}">
                        <Grid ClipToBounds="True" x:Name="rootLayout">
                            <Grid.Background>
                                <SolidColorBrush x:Name="stateBrush"/>
                            </Grid.Background>
                            <Rectangle Stroke="{TemplateBinding StrokeBrush}"
                                       StrokeThickness="{TemplateBinding StrokeThickness}">
                                <Rectangle.Fill>
                                    <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                                        <GradientStop Color="#AA111111" Offset="0"/>
                                        <GradientStop Color="#AA111111" Offset="1"/>
                                        <GradientStop Color="Transparent" Offset="0.5"/>
                                    </LinearGradientBrush>
                                </Rectangle.Fill>
                            </Rectangle>
                            <local:Cross StrokeBrush="{TemplateBinding StrokeBrush}" 
                                     StrokeThickness="{TemplateBinding StrokeThickness}" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <DataTrigger Binding="{Binding Path=State, RelativeSource={RelativeSource Self}}" Value="WaitForActive">
                                <DataTrigger.EnterActions>
                                    <BeginStoryboard x:Name="waitForActiveStoryboard">
                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetName="stateBrush" Storyboard.TargetProperty="Color"
                                                FillBehavior="HoldEnd" 
                                                RepeatBehavior="Forever"
                                                AutoReverse="True">
                                                <ColorAnimationUsingKeyFrames.KeyFrames>
                                                    <LinearColorKeyFrame KeyTime="00:00:00" Value="Green"/>
                                                    <LinearColorKeyFrame KeyTime="00:00:0.25" Value="Green"/>
                                                    <LinearColorKeyFrame KeyTime="00:00:0.5" Value="Yellow" />
                                                    <LinearColorKeyFrame KeyTime="00:00:0.75" Value="Yellow" />
                                                </ColorAnimationUsingKeyFrames.KeyFrames>
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </BeginStoryboard>
                                </DataTrigger.EnterActions>
                                <DataTrigger.ExitActions>
                                    <RemoveStoryboard BeginStoryboardName="waitForActiveStoryboard" />
                                </DataTrigger.ExitActions>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Path=State, RelativeSource={RelativeSource Self}}" Value="Active">
                                <Setter TargetName="stateBrush" Property="Color" Value="Green" />
                            </DataTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

1 Ответ

1 голос
/ 26 января 2010
...