2011-03-24 6 views
4

誰かがこの問題の解決策を見つけたのかどうか疑問に思っていました。 TimePickerコントロールのIsEnabledプロパティをfalseに設定すると、時間アイコンが正しく表示されますが、メインタイムディスプレイはゴーストしません。両方の合成コントロールは、マウスクリックに反応しないので、実際には無効になっています。メインタイムディスプレイの視覚的表現がゴーストになっていないだけです。誰かがこれに対応する回避策を見つけましたか?SilverlightツールキットIsEnabled = Falseのとき、タイムピッカーコントロールが視覚的にゴーストしない

ありがとうございました。

+0

それは、[未解決の問題]です(のhttp:// Silverlightの。 codeplex.com/workitem/3701)を参照してください。行って投票してください。すぐに修正されるかもしれません。 – ChrisF

+2

Blendでテンプレートをダンプしようとしましたか?そのように自分で修正できるかもしれません。 –

答えて

5

これは、ブレンドでTimeUpDownStyleテンプレートを編集してコントロールをサブクラス化せずに行うことができます。そのテンプレートは無効なビジュアルステートを持ち、上下の領域のグリッド全体の不透明度を35%に設定することができます。

私は参考のためにここにXAMLを追加しますが、元のテンプレートからの唯一の違いは、トップレベルのグリッドに名前<Grid x:Name="grid">を与え、その後、無効な視覚的な状態での不透明度を変更していることに注意しています:

<VisualState x:Name="Disabled"> 
    <Storyboard> 
     <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.Opacity)"> 
      <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0.35"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

Blendで数回クリックするだけで、すべてを簡単に行うことができます。

<Style x:Key="TimeUpDownStyle" TargetType="inputToolkit:TimeUpDown"> 
     <Setter Property="BorderThickness" Value="1"/> 
     <Setter Property="Background" Value="Transparent"/> 
     <Setter Property="Height" Value="22"/> 
     <Setter Property="IsTabStop" Value="False"/> 
     <Setter Property="MinWidth" Value="100"/> 
     <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="inputToolkit:TimeUpDown"> 
        <Grid x:Name="grid"> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="CommonStates"> 
           <VisualStateGroup.Transitions> 
            <VisualTransition GeneratedDuration="0"/> 
           </VisualStateGroup.Transitions> 
           <VisualState x:Name="Normal"/> 
           <VisualState x:Name="MouseOver"/> 
           <VisualState x:Name="Pressed"/> 
           <VisualState x:Name="Disabled"> 
            <Storyboard> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.Opacity)"> 
              <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0.35"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="FocusStates"> 
           <VisualState x:Name="Focused"/> 
           <VisualState x:Name="Unfocused"/> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="TimeHintStates"> 
           <VisualState x:Name="TimeHintOpenedUp"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/> 
             </ObjectAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="-23"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height"> 
              <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0"/> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="22"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="TimeHintOpenedDown"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/> 
             </ObjectAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height"> 
              <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="0"/> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="22"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="TimeHintClosed"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:20" Value="Collapsed"/> 
             </ObjectAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
             <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="TimeHintVisualElement" Storyboard.TargetProperty="Height"> 
              <DiscreteDoubleKeyFrame KeyTime="00:00:00" Value="22"/> 
              <SplineDoubleKeyFrame KeySpline="0,0,0,1" KeyTime="00:00:00.200" Value="0"/> 
             </DoubleAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
          <VisualStateGroup x:Name="ParsingStates"> 
           <VisualState x:Name="ValidTime"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="validicon" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="InvalidTime"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="invalidicon" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
           <VisualState x:Name="EmptyTime"> 
            <Storyboard> 
             <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="emptyicon" Storyboard.TargetProperty="Visibility"> 
              <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="Visible"/> 
             </ObjectAnimationUsingKeyFrames> 
            </Storyboard> 
           </VisualState> 
          </VisualStateGroup> 
         </VisualStateManager.VisualStateGroups> 
         <Popup x:Name="TimeHintPopup" VerticalOffset="0"> 
          <Border x:Name="TimeHintVisualElement" HorizontalAlignment="Left" IsHitTestVisible="True" Visibility="Collapsed" Background="White" BorderBrush="Gray" BorderThickness="1"> 
           <Border.RenderTransform> 
            <TransformGroup> 
             <ScaleTransform/> 
             <SkewTransform/> 
             <RotateTransform/> 
             <TranslateTransform/> 
            </TransformGroup> 
           </Border.RenderTransform> 
           <Grid> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition/> 
             <ColumnDefinition MinWidth="15" Width="Auto"/> 
            </Grid.ColumnDefinitions> 
            <ContentControl FontSize="10" Foreground="#FF4A4A4A" IsTabStop="False" HorizontalAlignment="Right" Margin="3" VerticalAlignment="Center" IsHitTestVisible="False" Content="{TemplateBinding TimeHintContent}" Grid.Column="0"/> 
            <ContentControl x:Name="emptyicon" IsTabStop="False" Margin="3" IsHitTestVisible="False" Visibility="Collapsed" Grid.Column="1"/> 
            <ContentControl x:Name="validicon" IsTabStop="False" Margin="3" IsHitTestVisible="False" Visibility="Collapsed" Grid.Column="1"/> 
            <ContentControl x:Name="invalidicon" IsTabStop="False" VerticalAlignment="Center" IsHitTestVisible="False" Visibility="Collapsed" Grid.Column="1"> 
             <Grid Height="13" VerticalAlignment="Bottom" Width="10"> 
              <Path Stretch="Fill" StrokeEndLineCap="Round" StrokeLineJoin="Bevel" StrokeStartLineCap="Round" Height="11.833" HorizontalAlignment="Stretch" VerticalAlignment="Top" Data="F1 M 28.1143,29.4857L 28.1143,27.4286L 20.7612,13.0286L 19.3898,13.0286L 12.3429,27.4286L 12.3429,29.4857L 28.1143,29.4857 Z "> 
               <Path.Fill> 
                <LinearGradientBrush EndPoint="-0.140331,0.460318" StartPoint="1.13883,0.460318"> 
                 <GradientStop Color="#FFF7F79F" Offset="0.123636"/> 
                 <GradientStop Color="#FBFBFB7D" Offset="0.177662"/> 
                 <GradientStop Color="#F6FFFF5B" Offset="0.24"/> 
                 <GradientStop Color="#E7CAA709" Offset="0.52"/> 
                 <GradientStop Color="#9ADABE0C" Offset="0.941376"/> 
                 <GradientStop Color="#4DEBD60F" Offset="0.941818"/> 
                 <GradientStop Color="#FBF6EC20" Offset="0.956364"/> 
                 <GradientStop Color="#FFFFFF2F" Offset="0.963636"/> 
                </LinearGradientBrush> 
               </Path.Fill> 
               <Path.Stroke> 
                <LinearGradientBrush EndPoint="-0.102151,0.462591" StartPoint="1.10074,0.462591"> 
                 <GradientStop Color="#F6CAA709" Offset="0.0436364"/> 
                 <GradientStop Color="#F3F7F34F" Offset="0.149091"/> 
                 <GradientStop Color="#E7CAA709" Offset="0.825455"/> 
                 <GradientStop Color="#E7967C07" Offset="0.967124"/> 
                 <GradientStop Color="#E7625106" Offset="0.967273"/> 
                </LinearGradientBrush> 
               </Path.Stroke> 
              </Path> 
              <Path Stretch="Fill" Stroke="#FF1B1B54" StrokeEndLineCap="Round" StrokeLineJoin="Bevel" StrokeStartLineCap="Round" StrokeThickness="0.3" Height="4.683" Margin="4.25,2.25,3.75,0" VerticalAlignment="Top" Data="F1 M 18.6937,17.3004L 22.2563,17.3004L 21.1313,23.6937L 19.8563,23.6937L 18.6937,17.3004 Z "> 
               <Path.Fill> 
                <LinearGradientBrush EndPoint="1.4,0.50126" StartPoint="-0.400002,0.50126"> 
                 <GradientStop Color="#FFF7F79F" Offset="0.123636"/> 
                 <GradientStop Color="#FB8F8873" Offset="0.175974"/> 
                 <GradientStop Color="#F6271A47" Offset="0.236364"/> 
                 <GradientStop Color="#E7271A47" Offset="0.534545"/> 
                 <GradientStop Color="#9A89782B" Offset="0.941391"/> 
                 <GradientStop Color="#4DEBD60F" Offset="0.941818"/> 
                 <GradientStop Color="#FBF6EC20" Offset="0.956364"/> 
                 <GradientStop Color="#FFFFFF2F" Offset="0.963636"/> 
                </LinearGradientBrush> 
               </Path.Fill> 
              </Path> 
              <Path Stretch="Fill" Stroke="#FF1C1C50" StrokeEndLineCap="Round" StrokeLineJoin="Round" StrokeStartLineCap="Round" StrokeThickness="0.3" Height="3.11" Margin="3.833,0,4.167,0.833" VerticalAlignment="Bottom" Data="F1 M 20.225,25.122L 20.725,25.122C 21.2773,25.122 21.725,25.5697 21.725,26.122L 21.725,26.872C 21.725,27.4243 21.2773,27.872 20.725,27.872L 20.225,27.872C 19.6727,27.872 19.225,27.4243 19.225,26.872L 19.225,26.122C 19.225,25.5697 19.6727,25.122 20.225,25.122 Z "> 
               <Path.Fill> 
                <LinearGradientBrush EndPoint="1.06,0.5" StartPoint="-0.0599991,0.5"> 
                 <GradientStop Color="#F6271A47" Offset="0.236364"/> 
                 <GradientStop Color="#E7271A47" Offset="0.534545"/> 
                 <GradientStop Color="#9A89782B" Offset="0.98135"/> 
                 <GradientStop Color="#4DEBD60F" Offset="0.981818"/> 
                </LinearGradientBrush> 
               </Path.Fill> 
              </Path> 
             </Grid> 
            </ContentControl> 
           </Grid> 
          </Border> 
         </Popup> 
         <inputToolkit:ButtonSpinner x:Name="Spinner" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" HorizontalContentAlignment="Stretch" IsTabStop="False" Padding="{TemplateBinding Padding}" VerticalContentAlignment="Stretch" MinWidth="35" Style="{TemplateBinding SpinnerStyle}"> 
          <TextBox x:Name="Text" BorderThickness="0" FontFamily="{TemplateBinding FontFamily}" FontSize="{TemplateBinding FontSize}" FontStretch="{TemplateBinding FontStretch}" FontStyle="{TemplateBinding FontStyle}" FontWeight="{TemplateBinding FontWeight}" Foreground="{TemplateBinding Foreground}" MinWidth="20" AcceptsReturn="False" Text="{TemplateBinding Value}" TextAlignment="Right" TextWrapping="NoWrap"> 
           <TextBox.Style> 
            <Style TargetType="TextBox"> 
             <Setter Property="Template"> 
              <Setter.Value> 
               <ControlTemplate TargetType="TextBox"> 
                <ScrollViewer x:Name="ContentElement" BorderThickness="0" Padding="0"/> 
               </ControlTemplate> 
              </Setter.Value> 
             </Setter> 
            </Style> 
           </TextBox.Style> 
          </TextBox> 
         </inputToolkit:ButtonSpinner> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

更新: あなたはTimePickerコントロールのTimeUpDownStyleプロパティでリソースキーを参照することで、スタイルを使用することができます。

<inputToolkit:TimePicker TimeUpDownStyle="{StaticResource TimeUpDownStyle}"/> 
+0

ダンに感謝、私はブレンドしていない。タイムピッカーの内部TimeUpDownコントロールにスタイルをフックする方法を示すコードを投稿できますか? – user675181

+0

TimePickerコントロールには、テンプレートのTimeUpDownStyleプロパティがあります。私はそのビットを含めるために私の答えを更新しました。 –

+0

Danさんに感謝します。それはトリックでした! – user675181

関連する問題