2009-08-12 8 views
1

SL 3.0ツールキットからアプリケーションにスタイルを適用すると、ビルドされたSL 3.0データ検証エラーはアプリケーション編集フォームに表示されません。アプリケーションにツールキットスタイルを適用するコードを削除した場合、SL 3.0のデータ検証エラーは通常のSL 3.0の動作と同様に表示されますか?Silverlight 3 Toolkitスタイルでは、SL 3.0データ検証エラーが表示されないようにします。

この問題を抱えている人は誰ですか?

いつでも助けてください。乾杯 アダム

答えて

3

は、研究のビットの後、私はこの問題への解決策を見つけることができました。このpost

ためのジェシーリバティのうち 大きな叫び基本的には、ツールキットスタイルのコントロールテンプレートが仕事にSL 3.0検証のために必要な視覚的状態の基を含有しません。

これを修正するには、必要な視覚状態グループと必要なテンプレートマークアップを標準コントロールテンプレートからツールキットコントロールテンプレートにコピーしました。

以下は、チェックボックスコントロールのビジュアルな状態グループです。

<VisualStateGroup x:Name="ValidationStates"> 
    <VisualState x:Name="Valid"/> 
    <VisualState x:Name="InvalidUnfocused"> 
     <Storyboard> 
      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
       <DiscreteObjectKeyFrame KeyTime="0"> 
        <DiscreteObjectKeyFrame.Value> 
         <Visibility>Visible</Visibility> 
        </DiscreteObjectKeyFrame.Value> 
       </DiscreteObjectKeyFrame> 
      </ObjectAnimationUsingKeyFrames> 
     </Storyboard> 
    </VisualState> 
    <VisualState x:Name="InvalidFocused"> 
     <Storyboard> 
      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ValidationErrorElement" Storyboard.TargetProperty="Visibility"> 
       <DiscreteObjectKeyFrame KeyTime="0"> 
        <DiscreteObjectKeyFrame.Value> 
         <Visibility>Visible</Visibility> 
        </DiscreteObjectKeyFrame.Value> 
       </DiscreteObjectKeyFrame> 
      </ObjectAnimationUsingKeyFrames> 
      <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsOpen"> 
       <DiscreteObjectKeyFrame KeyTime="0"> 
        <DiscreteObjectKeyFrame.Value> 
         <System:Boolean>True</System:Boolean> 
        </DiscreteObjectKeyFrame.Value> 
       </DiscreteObjectKeyFrame> 
      </ObjectAnimationUsingKeyFrames> 
     </Storyboard> 
    </VisualState> 
</VisualStateGroup> 

以下は、チェックボックスのValidationErrorElementのスタイルです。

<Border x:Name="ValidationErrorElement" Margin="1" Visibility="Collapsed" BorderBrush="#FFDB000C" BorderThickness="1" CornerRadius="1" ToolTipService.PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"> 
    <ToolTipService.ToolTip> 
     <ToolTip x:Name="validationTooltip" Template="{StaticResource ValidationToolTipTemplate}" DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}" Placement="Right" PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"> 
      <ToolTip.Triggers> 
       <EventTrigger RoutedEvent="Canvas.Loaded"> 
        <BeginStoryboard> 
         <Storyboard> 
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="validationTooltip" Storyboard.TargetProperty="IsHitTestVisible"> 
           <DiscreteObjectKeyFrame KeyTime="0"> 
            <DiscreteObjectKeyFrame.Value> 
             <System:Boolean>true</System:Boolean> 
            </DiscreteObjectKeyFrame.Value> 
           </DiscreteObjectKeyFrame> 
          </ObjectAnimationUsingKeyFrames> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </ToolTip.Triggers> 
     </ToolTip> 
    </ToolTipService.ToolTip> 
    <Grid Height="10" HorizontalAlignment="Right" Margin="0,-4,-4,0" VerticalAlignment="Top" Width="10" Background="Transparent"> 
     <Path Fill="#FFDC000C" Margin="0,3,0,0" Data="M 1,0 L5,0 A 2,2 90 0 1 7,2 L7,6 z"/> 
     <Path Fill="#ffffff" Margin="0,3,0,0" Data="M 0,0 L2,0 L 7,5 L7,7"/> 
    </Grid> 
</Border> 

また、検証ツールチップのコントロールテンプレートは、コントロールまたはアプリケーションの再ソースに配置する必要があります。すなわち

<ControlTemplate x:Key="ValidationToolTipTemplate"> 
     <Grid x:Name="Root" Margin="5,0" Opacity="0" RenderTransformOrigin="0,0"> 
      <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup x:Name="OpenStates"> 
        <VisualStateGroup.Transitions> 
         <VisualTransition GeneratedDuration="0"/> 
         <VisualTransition GeneratedDuration="0:0:0.2" To="Open"> 
          <Storyboard> 
           <DoubleAnimationUsingKeyFrames Storyboard.TargetName="xform" Storyboard.TargetProperty="X"> 
            <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="0"/> 
           </DoubleAnimationUsingKeyFrames> 
           <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity"> 
            <SplineDoubleKeyFrame KeyTime="0:0:0.2" Value="1"/> 
           </DoubleAnimationUsingKeyFrames> 
          </Storyboard> 
         </VisualTransition> 
        </VisualStateGroup.Transitions> 
        <VisualState x:Name="Closed"> 
         <Storyboard> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity"> 
           <SplineDoubleKeyFrame KeyTime="0" Value="0"/> 
          </DoubleAnimationUsingKeyFrames> 
         </Storyboard> 
        </VisualState> 
        <VisualState x:Name="Open"> 
         <Storyboard> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="xform" Storyboard.TargetProperty="X"> 
           <SplineDoubleKeyFrame KeyTime="0" Value="0"/> 
          </DoubleAnimationUsingKeyFrames> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="Root" Storyboard.TargetProperty="Opacity"> 
           <SplineDoubleKeyFrame KeyTime="0" Value="1"/> 
          </DoubleAnimationUsingKeyFrames> 
         </Storyboard> 
        </VisualState> 
       </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 
      <Grid.RenderTransform> 
       <TranslateTransform x:Name="xform" X="-25"/> 
      </Grid.RenderTransform> 
      <Border Margin="4,4,-4,-4" Background="#052A2E31" CornerRadius="5"/> 
      <Border Margin="3,3,-3,-3" Background="#152A2E31" CornerRadius="4"/> 
      <Border Margin="2,2,-2,-2" Background="#252A2E31" CornerRadius="3"/> 
      <Border Margin="1,1,-1,-1" Background="#352A2E31" CornerRadius="2"/> 
      <Border Background="#FFDC000C" CornerRadius="2"/> 
      <Border CornerRadius="2"> 
       <TextBlock Margin="8,4,8,4" MaxWidth="250" UseLayoutRounding="false" Foreground="White" Text="{Binding (Validation.Errors)[0].ErrorContent}" TextWrapping="Wrap"/> 
      </Border> 
     </Grid> 
    </ControlTemplate> 

私は、これはそこに誰かに役立ちます願っています。

乾杯 アダム

+0

あなたのインデントはこんにちは、現在、私の検証と正確に同じ問題を抱えてイム、uはこのようなものの作業のデモ、または作業のデモへのリンクを提供することができ、私はウルに続い – Simon

+0

めちゃくちゃにされますリンクが、私はビデオを見るための帯域幅が不足している:/ – Neil

関連する問題