ToggleSwitch - как включить текст? - PullRequest
1 голос
/ 28 ноября 2010

Я использую два переключателя, как показано ниже, из набора инструментов управления WP7.На основании первого переключателя второй переключатель должен быть включен или отключен.Отключение второго тумблера работает нормально, но при включении текстовый передний план никогда не изменяется.Пожалуйста, помогите мне понять, почему это происходит.

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

1 Ответ

1 голос
/ 08 августа 2012

При выполнении

toggleTwitterAutoPublish.IsChecked = false; 

(в другой части функции AlterTwitterControlsDisplay) запускается toggleTwitterAutoPublish_Unchecked, который устанавливает isAutoPublish = false

, следовательно, в следующий раз при попытке выполнить

toggleTwitterAutoPublish.IsChecked = isAutoPublish;

здесь isAutoPublish означает false, следовательно, вы можете не получить желаемого результата.

Вот что я понял из вашего вопроса.Если это не проблема, пожалуйста, объясните это ясно.Надеюсь, это поможет

...