我知道它一定是个傻事,但我找不到如何检查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)
为什么?
答案 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
}