2010-11-28 4 views
1

J'utilise deux toggleSwitches comme indiqué ci-dessous dans la boîte à outils de contrôle WP7. Sur la base de la première bascule, le second commutateur à bascule doit être activé ou désactivé. La désactivation du second commutateur à bascule fonctionne correctement mais lorsque l'activation est effectuée, le texte de premier plan n'est jamais modifié. S'il vous plaît aidez-moi à comprendre pourquoi cela se produit.ToggleSwitch - comment activer le texte?

<!--ContentPanel - place additional content here--> 
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
    <toolkit:ToggleSwitch Header="twitter" Margin="10,15,0,0" Name="toggleTwitter" Checked="toggleTwitter_Checked" Unchecked="toggleTwitter_Unchecked"> 
     <toolkit:ToggleSwitch.HeaderTemplate> 
      <DataTemplate> 
       <ContentControl FontSize="{StaticResource PhoneFontSizeLarge}" Foreground="{StaticResource PhoneForegroundBrush}" Content="{Binding}"/> 
      </DataTemplate> 
     </toolkit:ToggleSwitch.HeaderTemplate> 
     <toolkit:ToggleSwitch.ContentTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="Status: " FontSize="{StaticResource PhoneFontSizeMedium}"/> 
         <ContentControl HorizontalAlignment="Left" FontSize="{StaticResource PhoneFontSizeMedium}" Content="{Binding}"/> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </toolkit:ToggleSwitch.ContentTemplate> 
    </toolkit:ToggleSwitch> 
    <toolkit:ToggleSwitch Header="" Margin="10,100,0,-35" Name="toggleTwitterAutoPublish" Checked="toggleTwitterAutoPublish_Checked" Unchecked="toggleTwitterAutoPublish_Unchecked"> 
     <toolkit:ToggleSwitch.ContentTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="Auto Publish: " FontSize="{StaticResource PhoneFontSizeMedium}" Margin="0,-15,0,0" /> 
         <ContentControl HorizontalAlignment="Left" FontSize="{StaticResource PhoneFontSizeMedium}" Content="{Binding}" IsEnabled="{Binding}" Margin="0,-15,0,0"/> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </toolkit:ToggleSwitch.ContentTemplate> 
    </toolkit:ToggleSwitch> 
</Grid> 


public partial class MainPage : PhoneApplicationPage 
{ 
    bool isConnected = false; 
    bool isAutoPublish = false; 

    public const string SIGNED_IN_MESSAGE = "Signed In"; 
    public const string SIGNED_OUT_MESSAGE = "Signed Out"; 
    // Constructor 
    public MainPage() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     toggleTwitter.IsChecked = isConnected; 

     AlterTwitterControlsDisplay(); 

     base.OnNavigatedTo(e); 
    } 


    #region Twitter 

    private void AlterTwitterControlsDisplay() 
    { 
     if (toggleTwitter.IsChecked.Value) 
     { 
      toggleTwitter.Content = SIGNED_IN_MESSAGE; 
      toggleTwitterAutoPublish.IsEnabled = true; 
      toggleTwitterAutoPublish.IsChecked = isAutoPublish; 
     } 
     else 
     { 
      toggleTwitter.Content = SIGNED_OUT_MESSAGE; 
      toggleTwitterAutoPublish.IsEnabled = false; 
      toggleTwitterAutoPublish.IsChecked = false; 
     } 
    } 

    private void toggleTwitter_Checked(object sender, RoutedEventArgs e) 
    { 
     isConnected = true; 
     AlterTwitterControlsDisplay(); 
    } 

    private void toggleTwitter_Unchecked(object sender, RoutedEventArgs e) 
    { 
     isConnected = false; 
     AlterTwitterControlsDisplay(); 
    } 

    private void toggleTwitterAutoPublish_Checked(object sender, RoutedEventArgs e) 
    { 
     isAutoPublish = true; 
    } 

    private void toggleTwitterAutoPublish_Unchecked(object sender, RoutedEventArgs e) 
    { 
     isAutoPublish = false; 
    } 

    #endregion Twitter 
} 
+0

J'ai exactement le même problème. J'aimerais savoir la solution – Doug

+0

Je ne suis pas clair quel est le problème. La couleur de premier plan change pour moi, avec ce code, lorsque le second interrupteur à bascule est activé ou désactivé. –

+0

D'accord avec Matt. Le premier plan est gris tandis que Statut: Signé et blanc sinon (actuel pour la publication automatique activée/désactivée). Est-ce que ce n'est pas un comportement attendu? –

Répondre

1

En faisant

toggleTwitterAutoPublish.IsChecked = false; 

(en partie autre de la fonction AlterTwitterControlsDisplay), la toggleTwitterAutoPublish_Unchecked est déclenchée qui met isAutoPublish = false

donc la prochaine fois quand vous essayez de faire

toggleTwitterAutoPublish.IsChecked = isAutoPublish; 

ici isAutoPublish est false donc vous ne pouvez pas obtenir le résultat souhaité.

C'est ce que j'ai compris de votre question. Si ce n'était pas le problème, veuillez l'expliquer clairement. J'espère que cela aide

Questions connexes