2012-04-14 10 views
1

Ich versuche, einen Stil auf alle meine Schaltflächen anzuwenden. Sobald ich meinen Stil zu einer zweiten Taste zuweisen und versuche, meine App zu laufen, bekomme ich einen Fehler:WP7 Anwenden von Stil auf mehrere Schaltflächen

A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.dll 
A first chance exception of type 'MS.Internal.WrappedException' occurred in System.Windows.dll 
A first chance exception of type 'MS.Internal.WrappedException' occurred in System.Windows.dll 

meinen Stils auf eine einzige Schaltfläche Anwenden, funktionieren wird.

Hier ist mein Stil:

<phone:PhoneApplicationPage.Resources> 
     <Style x:Key="ButtonStyle1" TargetType="Button"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="Button"> 
         <Grid Background="Transparent"> 
          <VisualStateManager.VisualStateGroups> 
           <!--Define the states for the common states. The states in a 
             VisualStateGroup are mutually exclusive to each other.--> 
           <VisualStateGroup x:Name="CommonStates"> 
            <!--Define the VisualStates in this VistualStateGroup.--> 
            <VisualState x:Name="Normal"/> 
            <VisualState x:Name="MouseOver" /> 
            <VisualState x:Name="Pressed"> 
             <Storyboard> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneBackgroundBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground"> 
               <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneForegroundBrush}"/> 
              </ObjectAnimationUsingKeyFrames> 
              <ColorAnimation Duration="0" To="White" Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" Storyboard.TargetName="ButtonBackground" d:IsOptimized="True"/> 
             </Storyboard>           
            </VisualState> 
            <VisualState x:Name="Disabled"> 
             <Storyboard> 
              <DoubleAnimation Duration="0" Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity" To="1"/> 
             </Storyboard> 
            </VisualState> 
            </VisualStateGroup> 
           <!--Define the states for the focus states. The states in a 
             VisualStateGroup are mutually exclusive to each other.--> 
           <VisualStateGroup x:Name="FocusStates"> 
            <!--Define the VisualStates in this VistualStateGroup.--> 
            <VisualState x:Name="Focused" /> 
            <VisualState x:Name="Unfocused" /> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <Border x:Name="ButtonBackground" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" Margin="{StaticResource PhoneTouchTargetOverhang}" Background="{TemplateBinding Background}"> 
           <ContentControl x:Name="ContentContainer" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Padding="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> 
          </Border> 
         </Grid> 
         <!--The parts of the button control will be defined here.--> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </phone:PhoneApplicationPage.Resources> 

Hier meine Tasten sind:

<Button Height="121" HorizontalAlignment="Left" Margin="14,61,0,0" Name="but1" VerticalAlignment="Top" Width="197" Background="#FF7D0000" BorderBrush="Black" Foreground="Red" BorderThickness="0" Padding="0" Style="{StaticResource ButtonStyle1}" /> 
<Button Height="121" HorizontalAlignment="Left" Margin="217,61,0,0" Name="but2" VerticalAlignment="Top" Width="200" Background="#FF7D0000" BorderBrush="Black" Foreground="Red" BorderThickness="0" Padding="0" Style="{StaticResource ButtonStyle1}" /> 

Lösung

ich es geändert "Contentcontainer" zu reflektieren, die der Name des Objekts das ich in meinem Stil ändern möchte.

<VisualState x:Name="Disabled"> 
    <Storyboard> 
     <DoubleAnimation Duration="0" Storyboard.TargetName="ContentContainer" Storyboard.TargetProperty="Opacity" To="1"/> 
    </Storyboard> 
</VisualState> 

Antwort

1

Wenn es nur über Code ist, sollte es funktionieren, aber wenn Sie alle Ihre Tasten eingestellt deaktiviert (IsEnabled = false) werden, wird es als im deaktivierten Zustand Ihres Stils scheitern, ein Storyboard sucht ein Element DisabledVisualElement genannt, zu animieren

<VisualState x:Name="Disabled"> 
    <Storyboard> 
    <DoubleAnimation Duration="0" Storyboard.TargetName="DisabledVisualElement" Storyboard.TargetProperty="Opacity" To="1"/> 
    </Storyboard> 
</VisualState> 

jedoch gibt es kein solches Element im Rahmen existierte.

Das Entfernen dieses Storyboards oder das Hinzufügen eines Elements mit dem richtigen Namen würde Ihr Problem beheben.

+0

Danke für den Tipp. Ich dachte, DisabledVisualElement wäre eine Art "Konstante" ... was nicht der Fall ist. Ich habe es so modifiziert, dass es den Namen von TekiusFanatikus

+0

Ich bin froh, dass es geholfen hat! –

Verwandte Themen