检查ToggleSwitch是否开启
本文关键字:是否 ToggleSwitch 检查 | 更新日期: 2023-09-27 18:06:01
我知道这一定是一件愚蠢的事情,但我找不到如何检查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)
为什么?
解决:这一定是一个bug,但你不能同时设置"IsOn"属性和"Toggled"事件在XAML或IsOn将触发Toggled事件在页面加载之前。
不工作:
<ToggleSwitch Toggled="ToggleSwitch_Toggled" IsOn="True" />
工作:<ToggleSwitch Toggled="ToggleSwitch_Toggled" />
(然后可以通过代码设置)
听起来你的作用域是正确的,否则它不会编译。方法从哪里被调用?如果它在InitializeComponent()之前,那么它将为空。我只会在方法开始时检查null并返回,因为它可能只是在应用程序第一次启动时在初始设置上被调用。
对于那些在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
}