检查ToggleSwitch是否打开

时间:2014-05-30 14:54:08

标签: c# windows-phone-8.1

我知道它一定是个傻事,但我找不到如何检查ToggleSwitch是否打开。 这是我的代码:

    private void ToggleNamePrivacy_Toggled(object sender, RoutedEventArgs e)
    {
        if (ToggleNamePrivacy.IsOn == true)
        {
            PrivacyImage.Source = new BitmapImage(new Uri("Assets/public.png", UriKind.Relative));
        }
        else
        {
            PrivacyImage.Source = new BitmapImage(new Uri("Assets/private.png", UriKind.Relative));
        }
    }

if子句导致

  

NullReferenceException:未将对象引用设置为的实例   对象

如果我写的话,两者都不起作用:

if(ToggleNamePrivacy.IsOn)

为什么?

3 个答案:

答案 0 :(得分:3)

解决:它必定是一个错误,但你不能设置" IsOn"财产和" Toggled" XAML或IsOn中的事件将在页面加载之前触发Toggled事件。

不工作:

<ToggleSwitch Toggled="ToggleSwitch_Toggled" IsOn="True" /> 

工作:

<ToggleSwitch Toggled="ToggleSwitch_Toggled" />

(然后您可以通过代码设置IsOn。)

答案 1 :(得分:1)

听起来你有适当的范围,或者它不会编译。从哪个方法调用?如果它在InitializeComponent()之前,那么它将为null。我只是在方法开头检查null并返回,因为它可能只是在应用程序首次启动时在初始设置上被调用。

答案 2 :(得分:1)

对于那些具有相同问题的人,其中切换位于ListViewItem / GridViewItem中。只需在XAML中订阅Toggle的Loaded事件,然后在其中订阅Toggled。 在XAML中:

<ToggleSwitch Loaded="ToggleSwitch_Loaded" />

在C#中

  private void ToggleSwitch_Loaded(object sender, RoutedEventArgs e)
        {
            ToggleSwitch toggle = (ToggleSwitch)sender;
            toggle.Toggled += ToggleSwitch_Toggled;
        }

  private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
        {
            //Your logic
        }