Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Наконец найденный им. Когда Вы звоните, Начинаются на раскадровках, которые опорные элементы в ControlTemplate, необходимо передать в шаблоне управления также.
Изменение:
pressedButtonStoryboard.Begin(_xamlButton);
К:
pressedButtonStoryboard.Begin(_xamlButton, _xamlButton.Template);
Зафиксированный все.
Я заставил его работать путем реструктуризации 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>
Я думаю, просто имел эту проблему.
Позволяют мне отослать Вас к своей записи в блоге по вопросу: http://www.cplotts.com/2008/09/26/dr-wpf-namescopes/
В основном, прием - то, что необходимо звонить, Начинаются с аргумента, который является объектом в том же объеме имени, для которого предназначаются раскадровки.
, В частности, от Вашего образца выше, я попытался бы звонить, Начинаются и отправляют в ссылке на _background элемент в Вашем шаблоне.
Сообщенный мне, если это не решает Вашу проблему.
Обновление:
мне нравится решение Erickson лучше, чем мое..., и оно работало на меня также. Я не знаю, как я пропустил ту перегрузку Начать метода!