2011-11-03 144 views
0

我在我的Silverlight應用程序中爲我的子窗口使用樣式。 看來,當我使用該風格的childwindw關閉按鈕是dissabled。 如果我不使用關閉按鈕的子窗口上的樣式工作正常。silverlight子窗口樣式可拆窗口關閉按鈕

這是我使用的子窗口的樣式:

<Style TargetType="sdk:ChildWindow" x:Key="ChildWindowStyle"> 
     <Setter Property="IsTabStop" Value="false"/> 
     <Setter Property="TabNavigation" Value="Cycle"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
     <Setter Property="VerticalAlignment" Value="Center"/> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="HasCloseButton" Value="True"/> 
     <Setter Property="BorderBrush"> 
      <Setter.Value> 
       <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
        <GradientStop Color="#FFA3AEB9" Offset="0"/> 
        <GradientStop Color="#FF8399A9" Offset="0.375"/> 
        <GradientStop Color="#FF718597" Offset="0.375"/> 
        <GradientStop Color="#FF617584" Offset="1"/> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="OverlayBrush" Value="#7F000000"/> 
     <Setter Property="OverlayOpacity" Value="1"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="sdk:ChildWindow"> 
        <Grid x:Name="Root"> 
         <Grid.Resources> 
          <Style x:Key="ButtonStyle" TargetType="Button"> 
           <Setter Property="Background" Value="#FF1F3B53"/> 
           <Setter Property="Foreground" Value="#FF000000"/> 
           <Setter Property="Padding" Value="3"/> 
           <Setter Property="BorderThickness" Value="1"/> 
           <Setter Property="BorderBrush"> 
            <Setter.Value> 
             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
              <GradientStop Color="#FFA3AEB9" Offset="0"/> 
              <GradientStop Color="#FF8399A9" Offset="0.375"/> 
              <GradientStop Color="#FF718597" Offset="0.375"/> 
              <GradientStop Color="#FF617584" Offset="1"/> 
             </LinearGradientBrush> 
            </Setter.Value> 
           </Setter> 
           <Setter Property="Template"> 
            <Setter.Value> 
             <ControlTemplate TargetType="Button"> 
              <Grid x:Name="grid" Background="#02FFFFFF" HorizontalAlignment="Center" Height="14" VerticalAlignment="Center" Width="15"> 
               <VisualStateManager.VisualStateGroups> 
                <VisualStateGroup x:Name="CommonStates"> 
                 <VisualState x:Name="Normal"/> 
                 <VisualState x:Name="MouseOver"> 
                  <Storyboard> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz2"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz1"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz0"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                   <DoubleAnimation Duration="0" To="0.95" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="X"/> 
                  </Storyboard> 
                 </VisualState> 
                 <VisualState x:Name="Pressed"> 
                  <Storyboard> 
                   <DoubleAnimation Duration="0" To="0.85" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="X"/> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz2"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz1"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                   <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility" Storyboard.TargetName="X_Fuzz0"> 
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/> 
                   </ObjectAnimationUsingKeyFrames> 
                  </Storyboard> 
                 </VisualState> 
                 <VisualState x:Name="Disabled"> 
                  <Storyboard> 
                   <DoubleAnimation Duration="0" To="0.5" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="X"/> 
                  </Storyboard> 
                 </VisualState> 
                </VisualStateGroup> 
               </VisualStateManager.VisualStateGroups> 
               <Path x:Name="X_Fuzz2" Data="F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z" Fill="#14C51900" HorizontalAlignment="Center" Height="8" Margin="0,-1,0,0" Opacity="1" RenderTransformOrigin="0.5,0.5" Stretch="Fill" Visibility="Collapsed" VerticalAlignment="Center" Width="9" StrokeLineJoin="Bevel" StrokeStartLineCap="Round"> 
                <Path.RenderTransform> 
                 <TransformGroup> 
                  <ScaleTransform ScaleY="1.3" ScaleX="1.3"/> 
                 </TransformGroup> 
                </Path.RenderTransform> 
               </Path> 
               <Path x:Name="X_Fuzz1" Data="F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z" Fill="#1EC51900" HorizontalAlignment="Center" Height="8" Margin="0,-1,0,0" Opacity="1" RenderTransformOrigin="0.5,0.5" Stretch="Fill" Visibility="Collapsed" VerticalAlignment="Center" Width="9" StrokeLineJoin="Bevel" StrokeStartLineCap="Round"> 
                <Path.RenderTransform> 
                 <TransformGroup> 
                  <ScaleTransform ScaleY="1.1" ScaleX="1.1"/> 
                 </TransformGroup> 
                </Path.RenderTransform> 
               </Path> 
               <Path x:Name="X_Fuzz0" Data="F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z" Fill="#FFC51900" HorizontalAlignment="Center" Height="8" Margin="0,-1,0,0" Opacity="1" Stretch="Fill" Visibility="Collapsed" VerticalAlignment="Center" Width="9" StrokeLineJoin="Bevel" StrokeStartLineCap="Round"/> 
               <Path x:Name="X" Data="F1 M 6.742676,3.852539 L 9.110840,1.559570 L 8.910645,0.500000 L 6.838379,0.500000 L 4.902832,2.435547 L 2.967285,0.500000 L 0.895020,0.500000 L 0.694824,1.559570 L 3.062988,3.852539 L 0.527832,6.351563 L 0.689941,7.600586 L 2.967285,7.600586 L 4.897949,5.575195 L 6.854004,7.600586 L 9.115723,7.600586 L 9.277832,6.351563 L 6.742676,3.852539 Z" Fill="#FFFFFFFF" HorizontalAlignment="Center" Height="8" Margin="0,-1,0,0" Opacity="0.7" Stretch="Fill" VerticalAlignment="Center" Width="9" StrokeLineJoin="Bevel" StrokeStartLineCap="Round"/> 
              </Grid> 
             </ControlTemplate> 
            </Setter.Value> 
           </Setter> 
          </Style> 
         </Grid.Resources> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="WindowStates"> 
           <VisualState x:Name="Open"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Overlay"> 
              <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
              <EasingDoubleKeyFrame KeyTime="00:00:00.3" Value="1"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="(RenderTransform).(Children)[0].ScaleX" Storyboard.TargetName="ContentRoot"> 
              <SplineDoubleKeyFrame KeyTime="0" Value="0"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="0"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="1"/> 
              <SplineDoubleKeyFrame KeySpline="0,0,0.5,1" KeyTime="00:00:00.45" Value="1.05"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.55" Value="1"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="(RenderTransform).(Children)[0].ScaleY" Storyboard.TargetName="ContentRoot"> 
              <SplineDoubleKeyFrame KeyTime="0" Value="0"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="0"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.4" Value="1"/> 
              <SplineDoubleKeyFrame KeySpline="0,0,0.5,1" KeyTime="00:00:00.45" Value="1.05"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.55" Value="1"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="Closed"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="Overlay"> 
              <EasingDoubleKeyFrame KeyTime="0" Value="1"/> 
              <EasingDoubleKeyFrame KeyTime="00:00:00.3" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="(RenderTransform).(Children)[0].ScaleX" Storyboard.TargetName="ContentRoot"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1.05"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.45" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="0" Storyboard.TargetProperty="(RenderTransform).(Children)[0].ScaleY" Storyboard.TargetName="ContentRoot"> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1.05"/> 
              <SplineDoubleKeyFrame KeyTime="00:00:00.45" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Grid x:Name="Overlay" Background="{TemplateBinding OverlayBrush}" HorizontalAlignment="Stretch" Margin="0" Opacity="{TemplateBinding OverlayOpacity}" VerticalAlignment="Top"/> 
         <Grid x:Name="ContentRoot" HorizontalAlignment="{TemplateBinding HorizontalAlignment}" Height="{TemplateBinding Height}" RenderTransformOrigin="0.5,0.5" VerticalAlignment="{TemplateBinding VerticalAlignment}" Width="{TemplateBinding Width}"> 
          <Grid.RenderTransform> 
           <TransformGroup> 
            <ScaleTransform/> 
            <SkewTransform/> 
            <RotateTransform/> 
            <TranslateTransform/> 
           </TransformGroup> 
          </Grid.RenderTransform> 
          <Border BorderBrush="#14000000" BorderThickness="1" Background="#14000000" CornerRadius="2" HorizontalAlignment="Stretch" Margin="-1" VerticalAlignment="Stretch" Visibility="Collapsed"/> 
          <Border BorderBrush="#0F000000" BorderThickness="1" Background="#0F000000" CornerRadius="2.25" HorizontalAlignment="Stretch" Margin="-2" VerticalAlignment="Stretch"/> 
          <Border BorderBrush="#0C000000" BorderThickness="1" Background="#0C000000" CornerRadius="2.5" HorizontalAlignment="Stretch" Margin="-3" VerticalAlignment="Stretch"/> 
          <Border BorderBrush="#0A000000" BorderThickness="1" Background="#0A000000" CornerRadius="2.75" HorizontalAlignment="Stretch" Margin="-4" VerticalAlignment="Stretch"/> 
          <Border BorderThickness="{TemplateBinding BorderThickness}" Background="#FFFFFFFF" CornerRadius="1" BorderBrush="#FF5D9BC5"> 
           <Border CornerRadius="1.5"> 
            <Border.Background> 
             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
              <GradientStop Color="#FFDFDEDE" Offset="1"/> 
              <GradientStop Color="#FFF5F4F4" Offset="0"/> 
             </LinearGradientBrush> 
            </Border.Background> 
            <Grid> 
             <Grid.RowDefinitions> 
              <RowDefinition Height="Auto"/> 
              <RowDefinition Height="0.269*"/> 
              <RowDefinition Height="0.731*"/> 
             </Grid.RowDefinitions> 
             <Border x:Name="Chrome" BorderBrush="#FF999898" BorderThickness="0,0,0,1" Width="Auto" Height="33"> 
              <Border.Effect> 
               <DropShadowEffect Opacity="0.3" ShadowDepth="3" BlurRadius="3"/> 
              </Border.Effect> 
              <Border.Background> 
               <LinearGradientBrush EndPoint="0.5,1.043" StartPoint="0.5,0"> 
                <GradientStop Color="#FF5C9AC4" Offset="1"/> 
                <GradientStop Color="#FF75B1DA" Offset="0.402"/> 
                <GradientStop Color="#FF75B1DA" Offset="0.502"/> 
                <GradientStop Color="#FF5C9AC4" Offset="0.506"/> 
               </LinearGradientBrush> 
              </Border.Background> 
              <Grid Height="Auto" Width="Auto"> 
               <Grid.ColumnDefinitions> 
                <ColumnDefinition/> 
                <ColumnDefinition Width="30"/> 
               </Grid.ColumnDefinitions> 
               <ContentControl Content="{TemplateBinding Title}" HorizontalAlignment="Stretch" IsTabStop="False" Margin="6,0,6,0" VerticalAlignment="Center" Foreground="White" FontFamily="Verdana" FontSize="14"/> 
               <Button x:Name="CloseButton" Grid.Column="1" HorizontalAlignment="Center" Height="14" IsTabStop="False" Style="{StaticResource ButtonStyle}" VerticalAlignment="Center" Width="15" IsEnabled="True"/> 
              </Grid> 
             </Border> 
             <Border Background="Transparent" Margin="7" Grid.Row="1" Grid.RowSpan="2" BorderBrush="#FF72A6BF" BorderThickness="0"> 
              <ContentPresenter x:Name="ContentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="5"/> 
             </Border> 
            </Grid> 
           </Border> 
          </Border> 
         </Grid> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

是任何人都熟悉這個問題? 謝謝你的回覆!

+0

風格很好,必須是其他東西造成它 –

+0

但只有在應用樣式時纔會出現問題。你知道這種風格是否會影響其他隱藏文件? – hadaco

+0

你是說右上角的小十字按鈕? –

回答

0

我可能會發現問題所在。

您可以試試刪除名爲ChromeBorder下的DropShadowEffect?出於同樣的原因,它掛起CPU ...

+1

謝謝! 修復它。 – hadaco