0

上記の例外が発生しています。デバッグしようとしましたが、適切な解決策を見つけることができませんでした。XAMLコードを以下に投稿しています。この例外を修正する方法は?私はコントロールテンプレートを学ぼうとしていて、本から例を試していました。しかし、コードを実行するとすぐに、この例外がポップアップします。

<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>
4

1 に答える 1

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がトリガーをいつ機能させる必要があるかを知るのに役立ちます。

于 2012-07-19T07:00:36.503 に答える