2012-07-19 84 views
0

我收到上述异常。我试图调试,但无法找到合适的解决方案。我在下面发布我的XAML代码。如何解决这个异常?我正在尝试学习控制模板,并尝试从书中获取示例。但是,只要我运行我的代码,这个异常就会弹出。'System.Windows.Controls.Button'的初始化引发了一个异常。 - WPF

<Window x:Class="ControlTemplateMCTS.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="Control Template MCTS Example" Height="350" Width="525"> 

    <Window.Resources> 

     <ControlTemplate x:Key="ButtonTemplate" TargetType="Button"> 

     <Grid> 

      <Ellipse Name="controlTemplateEllipse" Stroke="{TemplateBinding BorderBrush}" StrokeThickness="{TemplateBinding BorderThickness}"> 
       <Ellipse.Fill> 
        <RadialGradientBrush GradientOrigin="0.5,0.5"> 
        <GradientStop Color="Red" Offset="0"/> 
        <GradientStop Color="Orange" Offset="0.25"/> 
        <GradientStop Color="Blue" Offset="0.5"/> 
        <GradientStop Color="Green" Offset="0.75"/> 
        <GradientStop Color="Yellow" Offset="1"/> 
        </RadialGradientBrush> 
       </Ellipse.Fill> 
      </Ellipse> 


      <!-- <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>--> 

     </Grid> 

     <ControlTemplate.Triggers> 

      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter TargetName="controlTemplateEllipse" Property="Fill"> 
        <Setter.Value> 
        <RadialGradientBrush GradientOrigin="0.5,0.5"> 
         <GradientStop Color="LightCoral" Offset="0"/> 
         <GradientStop Color="LightCyan" Offset="0.25"/> 
         <GradientStop Color="LightGray" Offset="0.5"/> 
         <GradientStop Color="LightGoldenrodYellow" Offset="0.75"/> 
         <GradientStop Color="LightPink" Offset="1"/> 
        </RadialGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 

      <Trigger> 
       <Setter TargetName="controlTemplateEllipse" Property="Fill"> 
        <Setter.Value> 
        <RadialGradientBrush GradientOrigin="0.5,0.5"> 
         <GradientStop Color="Gray" Offset="0"/> 
         <GradientStop Color="Silver" Offset="0.25"/> 
         <GradientStop Color="White" Offset="0.5"/> 
         <GradientStop Color="WhiteSmoke" Offset="0.75"/> 
         <GradientStop Color="DarkGray" Offset="1"/> 
        </RadialGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 

      <EventTrigger RoutedEvent="Button.Click"> 
       <BeginStoryboard> 
        <Storyboard AutoReverse="True"> 
        <DoubleAnimation To="0" Duration="0:0:5" Storyboard.TargetProperty="Width"/> 
        <DoubleAnimation To="0" Duration="0:0:5" Storyboard.TargetProperty="Height"/> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 

     </ControlTemplate.Triggers> 

     </ControlTemplate> 

     <Style TargetType="{x:Type Button}"> 
     <Setter Property="Template" Value="{StaticResource ButtonTemplate}"/> 
     </Style> 

    </Window.Resources> 

    <Grid> 
     <!--<Button Name="TestButton" Width="120" Height="28">Button One</Button>--> 
     <Button Name="DemoButton" Height="50" IsEnabled="False" Width="120">Button Two</Button> 
    </Grid> 

</Window> 
+0

你应该发布你的异常 – blindmeis 2012-07-19 06:56:17

+0

这里是异常 - '初始化'System.Windows.Controls.Button'抛出一个异常。' – 2012-07-19 07:13:25

回答

2

问题就在这里:

  <Trigger> 
       <Setter TargetName="controlTemplateEllipse" Property="Fill"> 
        <Setter.Value> 
         <RadialGradientBrush GradientOrigin="0.5,0.5"> 
          <GradientStop Color="Gray" Offset="0"/> 
          <GradientStop Color="Silver" Offset="0.25"/> 
          <GradientStop Color="White" Offset="0.5"/> 
          <GradientStop Color="WhiteSmoke" Offset="0.75"/> 
          <GradientStop Color="DarkGray" Offset="1"/> 
         </RadialGradientBrush> 
        </Setter.Value> 
       </Setter> 
      </Trigger> 

您必须初始化触发。例如:

<Trigger Property="IsEnabled" Value="True"> 

这有助于WPF知道当触发应该工作。

+0

谢谢stukselbax ..它确实是一个失误..它已经很好地工作..大感谢你! – 2012-07-19 07:14:46

+0

你可以接受我的答案作为答案,这将比感谢更多!附:你也可以+1给我的回答:) – stukselbax 2012-07-19 07:20:57

相关问题