c# – Xamarin.Forms.Switch在更新值时发送Toggled事件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Xamarin.Forms.Switch在更新值时发送Toggled事件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2228字,纯文字阅读大概需要4分钟。
内容图文
所以我还在用Xamarin.Forms首次亮相.到目前为止,如果我把我遇到的一些麻烦的错误放在一边这么好.这是新人.也许你们其中一个人可以告诉我,如果我做错了什么.
基本上,我的界面上有一个Xamarin.Forms.Switch,我正在用Toggled事件监听其状态的变化.该文档说明了这个事件:“当用户切换此Switch时引发的事件.”
不幸的是,当我以编程方式更新交换机的值时,事件将触发.
var mySwitch = new Switch ();
mySwitch.Toggled += (object sender, ToggledEventArgs e) => {
Console.WriteLine ("Switch.Toggled event sent");
};
mySwitch.IsToggled = true;
有什么方法可以阻止事件触发/知道它不是触发事件的用户?
解决方法:
您遇到的行为是正确的:每次IsToggled属性更改时,交换机将触发Toggled事件.
我不确定Xamarin.Forms documentation最近是否已经更新,但截至今天它说的是Toggled事件:
Event that is raised when this Switch is toggled
示例代码
下面是示例代码,用于防止在用户未触发Toggled事件时处理Toggled事件
using System;
using Xamarin.Forms;
namespace SwitchToggle
{
public class SwitchPage : ContentPage
{
public SwitchPage()
{
var mySwitch = new Switch
{
IsToggled = true
};
mySwitch.Toggled += HandleSwitchToggledByUser;
var toggleButton = new Button
{
Text = "Toggle The Switch"
};
toggleButton.Clicked += (sender, e) =>
{
mySwitch.Toggled -= HandleSwitchToggledByUser;
mySwitch.IsToggled = !mySwitch.IsToggled;
mySwitch.Toggled += HandleSwitchToggledByUser;
};
var mainLayout = new RelativeLayout();
Func<RelativeLayout, double> getSwitchWidth = (parent) => parent.Measure(mainLayout.Width, mainLayout.Height).Request.Width;
Func<RelativeLayout, double> getToggleButtonWidth = (parent) => parent.Measure(mainLayout.Width, mainLayout.Height).Request.Width;
mainLayout.Children.Add(mySwitch,
Constraint.RelativeToParent((parent) => parent.Width / 2 - getSwitchWidth(parent) / 2),
Constraint.RelativeToParent((parent) => parent.Height / 2 - mySwitch.Height / 2)
);
mainLayout.Children.Add(toggleButton,
Constraint.RelativeToParent((parent) => parent.Width / 2 - getToggleButtonWidth(parent) / 2),
Constraint.RelativeToView(mySwitch, (parent, view) => view.Y + view.Height + 10)
);
Content = mainLayout;
}
async void HandleSwitchToggledByUser(object sender, ToggledEventArgs e)
{
await DisplayAlert(
"Switch Toggled By User",
"",
"OK"
);
}
}
public class App : Application
{
public App()
{
MainPage = new NavigationPage(new SwitchPage());
}
}
}
内容总结
以上是互联网集市为您收集整理的c# – Xamarin.Forms.Switch在更新值时发送Toggled事件全部内容,希望文章能够帮你解决c# – Xamarin.Forms.Switch在更新值时发送Toggled事件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。