2010-12-03 2 views
3

Expression Blend 4 + Visual Studio 2010 Pro를 사용하여 WPF 응용 프로그램을 만듭니다.VS2010의 InvalidOperationException

완벽하게 작동하는 Blend 4만을 사용하는 CheckBox를 기반으로 컨트롤 스타일을 만들었습니다 (또는 템플릿이라고해야합니까?). 내가 VS2010로 이동 그러나 때 다음과 같은 "오류"를 얻을 :..

'[알 수없는]'속성이 '경로 에 에 DependencyObject에를 가리 키지 (0) (1) [0] (2) '.

응용 프로그램을 실행해도 완벽하게 작동합니다. 자, 난이 오류를 해결하기 위해 이 필요하지 않지만 어쨌든 그것을 제거하고 싶습니다. 당신은 위탁 수하물과 국가 모두에서 스토리 보드에 오류 참조를 볼 수 있듯이

<Style x:Key="IRSensorCheckBoxStyle" TargetType="{x:Type CheckBox}"> 
    <Setter Property="Template"> 
     <Setter.Value> 
     <ControlTemplate TargetType="{x:Type CheckBox}"> 
      <Grid Cursor="Hand"> 
      <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup x:Name="CommonStates"> 
       <VisualState x:Name="Normal"> 
        <Storyboard> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.StrokeThickness)" Storyboard.TargetName="ellipse"> 
         <EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0"/> 
        </DoubleAnimationUsingKeyFrames> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="MouseOver"> 
        <Storyboard> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.StrokeThickness)" Storyboard.TargetName="ellipse"> 
         <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="2"/> 
        </DoubleAnimationUsingKeyFrames> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Pressed"> 
        <Storyboard> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.StrokeThickness)" Storyboard.TargetName="ellipse"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="2"/> 
        </DoubleAnimationUsingKeyFrames> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Disabled"/> 
       </VisualStateGroup> 
       <VisualStateGroup x:Name="CheckStates"> 
       <VisualState x:Name="Checked"> 
        <Storyboard> 
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="ellipse"> 
         <EasingColorKeyFrame KeyTime="0:0:0.3" Value="Red"/> 
        </ColorAnimationUsingKeyFrames> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Unchecked"> 
        <Storyboard> 
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="ellipse"> 
         <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#00FF0000"/> 
        </ColorAnimationUsingKeyFrames> 
        </Storyboard> 
       </VisualState> 
       <VisualState x:Name="Indeterminate"/> 
       </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 
      <Ellipse x:Name="ellipse" Stroke="Yellow" StrokeThickness="0"> 
       <Ellipse.Fill> 
       <RadialGradientBrush> 
        <GradientStop Color="Red"/> 
        <GradientStop Offset="1" Color="#00FF0000"/> 
       </RadialGradientBrush> 
       </Ellipse.Fill> 
      </Ellipse> 
      </Grid> 
     </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 

: 여기

는 스타일의 XAML 코드입니다. 그러나 그 대상이 "타원"이기 때문에 속성이 DependencyObject를 가리키고 있지 않다는 오류에 동의하지 않습니다. Target 속성이 Shape 's Fill을 가리키고 있습니다. 바로 그곳에 있습니다 (Ellipse 's Fill). GradientBrush의 GradientStops [0]에는 RadialGradientBrush에 2 개의 GradientStops가 있습니다. 그리고 마지막으로 GradientStop의 Color 속성으로 이동합니다.

누구에게 의견이 있습니까?

미리 감사드립니다. 당신이 직접 색상 속성을 참조 할 수 GradientStop 당신에게 이름을 지정하는 경우

:

답변

2

누군가가 (당신이 그것을 직접 솔루션 또는 주위에 작업을 호출 할 경우 나도 몰라) 솔루션으로 저를 도와 :

<Ellipse.Fill> 
    <RadialGradientBrush> 
    <GradientStop x:Name="Offset0" Color="Red"/> 
    <GradientStop x:Name="Offset1" Offset="1" Color="#00FF0000"/> 
    </RadialGradientBrush> 
</Ellipse.Fill> 

[...] 

<VisualState x:Name="Checked"> 
    <Storyboard> 
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Color" Storyboard.TargetName="Offset0"> 
     <EasingColorKeyFrame KeyTime="0:0:0.3" Value="Red"/> 
    </ColorAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 
<VisualState x:Name="Unchecked"> 
    <Storyboard> 
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Color" Storyboard.TargetName="Offset0"> 
     <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#00FF0000"/> 
    </ColorAnimationUsingKeyFrames> 
    </Storyboard> 
</VisualState> 

나는이 접근법이 반드시 필요한 것은 아니지만 확실히 우아 해 보입니다.