Раскадровки не могут найти элементы ControlTemplate

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

14
задан Cœur 19 August 2017 в 11:57
поделиться

3 ответа

Наконец найденный им. Когда Вы звоните, Начинаются на раскадровках, которые опорные элементы в ControlTemplate, необходимо передать в шаблоне управления также.

Изменение:

pressedButtonStoryboard.Begin(_xamlButton);

К:

pressedButtonStoryboard.Begin(_xamlButton, _xamlButton.Template);

Зафиксированный все.

20
ответ дан 1 December 2019 в 10:05
поделиться

Я заставил его работать путем реструктуризации XAML так, чтобы SolidColorBrush и OuterGlowBitmapEffect были ресурсы кнопки и таким образом сослались, совместно используются Storyboard с и элементы, к ним относятся. Я получил Storyboard и звонил Begin() на нем, как Вы сделали, но здесь являетесь измененным XAML для Button:

(Отметьте ключи "buttonGlow" и "borderBackground" и весь StaticResource расширения разметки, ссылающиеся на них.)

<Button
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Width="150"
    Height="55">
    <Button.Resources>
        <OuterGlowBitmapEffect
            x:Key="buttonGlow"
            GlowColor="#A0FEDF00"
            GlowSize="0" />
        <SolidColorBrush
            x:Key="borderBackground"
            Color="#FF0062B6" />
        <Style
            TargetType="Button">
            <Setter
                Property="Control.Template">
                <Setter.Value>
                    <ControlTemplate
                        TargetType="Button">
                        <Grid
                            Name="outerGrid"
                            Background="#00FFFFFF"
                            BitmapEffect="{StaticResource buttonGlow}">
                            <Border
                                x:Name="background"
                                Margin="1,1,1,1"
                                CornerRadius="15"
                                Background="{StaticResource borderBackground}">
                            </Border>
                            <ContentPresenter
                                HorizontalAlignment="Center"
                                Margin="{TemplateBinding Control.Padding}"
                                VerticalAlignment="Center"
                                Content="{TemplateBinding ContentControl.Content}"
                                ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" />
                        </Grid>
                        <ControlTemplate.Resources>
                            <Storyboard
                                x:Key="ButtonPressed">
                                <Storyboard.Children>
                                    <DoubleAnimation
                                        Duration="0:0:0.4"
                                        FillBehavior="HoldEnd"
                                        Storyboard.Target="{StaticResource buttonGlow}"
                                        Storyboard.TargetProperty="GlowSize"
                                        To="4" />
                                    <ColorAnimation
                                        Duration="0:0:0.6"
                                        FillBehavior="HoldEnd"
                                        Storyboard.Target="{StaticResource borderBackground}"
                                        Storyboard.TargetProperty="Color"
                                        To="#FF844800" />
                                </Storyboard.Children>
                            </Storyboard>
                            <Storyboard
                                x:Key="ButtonReleased">
                                <Storyboard.Children>
                                    <DoubleAnimation
                                        Duration="0:0:0.2"
                                        FillBehavior="HoldEnd"
                                        Storyboard.Target="{StaticResource buttonGlow}"
                                        Storyboard.TargetProperty="GlowSize"
                                        To="0" />
                                    <ColorAnimation
                                        Duration="0:0:0.2"
                                        FillBehavior="Stop"
                                        Storyboard.Target="{StaticResource borderBackground}"
                                        Storyboard.TargetProperty="Color"
                                        To="#FF0062B6" />
                                </Storyboard.Children>
                            </Storyboard>
                        </ControlTemplate.Resources>
                        <ControlTemplate.Triggers>
                            <Trigger
                                Property="ButtonBase.IsPressed"
                                Value="True">
                                <Trigger.EnterActions>
                                    <BeginStoryboard
                                        Storyboard="{StaticResource ButtonPressed}" />
                                </Trigger.EnterActions>
                                <Trigger.ExitActions>
                                    <BeginStoryboard
                                        Storyboard="{StaticResource ButtonReleased}" />
                                </Trigger.ExitActions>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Resources>
    <DockPanel>
        <TextBlock
            x:Name="TextContent"
            FontSize="28"
            Foreground="White">Test</TextBlock>
    </DockPanel>
</Button>
5
ответ дан 1 December 2019 в 10:05
поделиться

Я думаю, просто имел эту проблему.

Позволяют мне отослать Вас к своей записи в блоге по вопросу: http://www.cplotts.com/2008/09/26/dr-wpf-namescopes/

В основном, прием - то, что необходимо звонить, Начинаются с аргумента, который является объектом в том же объеме имени, для которого предназначаются раскадровки.

, В частности, от Вашего образца выше, я попытался бы звонить, Начинаются и отправляют в ссылке на _background элемент в Вашем шаблоне.

Сообщенный мне, если это не решает Вашу проблему.

Обновление:

мне нравится решение Erickson лучше, чем мое..., и оно работало на меня также. Я не знаю, как я пропустил ту перегрузку Начать метода!

1
ответ дан 1 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: