【发布时间】:2015-10-06 17:23:24
【问题描述】:
所以我仍然以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;
有什么方法可以防止事件触发/知道不是用户触发了它?
【问题讨论】:
-
它应该读起来像 SwitchCell 事件,“当开关改变值时触发”。您可以通过设置脏标志来破解它并在以编程方式更新模型时进行检查,或者从它创建一个继承的类并创建您自己的 EventHandle Delegate 将数据添加到 TEventArgs 以便接收者可以查看更改是否来自用户交互或不是
-
您也可以在添加事件之前设置真实值 :) 或者像 @RobertN 所说的,如果需要,可以保存旧状态,或者做一些数据绑定可能更容易。
-
开关控制是b*。事件的触发很好,因为它是切换的。它不应该在第一个数据绑定上这样做(在我看来)。我解决它的方法是在 C# 中进行数据绑定和附加事件。首先,我在开关上设置 IsToggled,然后在 IsToggledProperty 上设置绑定,然后附加事件。也许这有助于这里的其他人寻找答案。
-
您找到解决方案了吗?我也无法弄清楚如何在第一次加载时进行数据绑定?
-
@batmaci 我没有再次使用 Xamarin.Forms,所以不,没有找到解决方案。我想我会在以编程方式更新之前取消注册 Toggled 事件。
标签: c# events xamarin xamarin.forms