2010-11-28 6 views
1

Ich verwende zwei toggleSwitches wie unten aus dem WP7 Control Toolkit. Basierend auf der ersten Umschaltung sollte der zweite Kippschalter aktiviert oder deaktiviert sein. Die Deaktivierung des zweiten Wechselschalters funktioniert einwandfrei, aber wenn die Aktivierung ausgeführt wird, wird der Text Vordergrund nie geändert. Bitte hilf mir herauszufinden, warum das passiert.ToggleSwitch - wie kann man Text aktivieren?

<!--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

Ich habe genau das gleiche Problem. Ich würde gerne die Lösung kennen – Doug

+0

Ich bin nicht klar, was das Problem ist. Die Vordergrundfarbe ändert sich für mich mit diesem Code, wenn der zweite Umschaltschalter aktiviert oder deaktiviert ist. –

+0

Stimmen Sie mit Matt überein. Der Vordergrund ist grau, während der Status: Signed Out und Weiß ansonsten (für Auto Publish On/Off) ist. Ist das Verhalten nicht erwartet? –

Antwort

1

Auf

toggleTwitterAutoPublish.IsChecked = false; 

tun (in anderen Teil der AlterTwitterControlsDisplay Funktion) wird die toggleTwitterAutoPublish_Unchecked ausgelöst, die isAutoPublish = false

daher beim nächsten Mal setzt, wenn Sie

toggleTwitterAutoPublish.IsChecked = isAutoPublish; 

zu tun versuchen, hier isAutoPublish istDaher erhalten Sie möglicherweise nicht das gewünschte Ergebnis.

Das habe ich aus Ihrer Frage verstanden. Wenn das nicht das Problem war, erklären Sie es bitte deutlich. Hoffe, das hilft