【发布时间】:2018-02-20 23:33:45
【问题描述】:
我有一个表单,用户可以在其中输入一些数据并将其保存到数据库中。我一直在尝试添加基本验证,使用户必须在每个字段中输入一个值。我希望在用户在每个表单中输入一些信息之前,我的保存按钮不可用。
这是我的按钮:
<ToolbarItem Name="MenuItem1" Order="Primary" Text="Save" Priority="1" Command="{Binding SaveDataCommand}" IsEnabled="{Binding CanSaveData}"/>
我可以访问 XAML 中的 isEnabled 属性,但令人恼火的是我无法重新更新此属性。按钮卡在我在加载时告诉它的任何状态。我检查了我的视图模型,它返回了一个正确的布尔值(将其打印到控制台),只是无法更新按钮状态。
我什至尝试添加一个新按钮来强制更新启用状态,但这不起作用
<ToolbarItem x:Name="whyxamarinwhy" Name="MenuItem1" Order="Primary" Text="Save" Priority="1" Command="{Binding SaveEvent}" IsEnabled="{Binding CanCreateEvent}"/>
whyxamarinwhy.isenabled = true; //I cannot access this property because it doesn't exist.
实现此功能的唯一方法是使用自定义渲染器吗?
【问题讨论】:
-
我不知道这里发生了什么,但对我来说,它甚至不会出现在 XAML 上。根据Microsoft docs,此属性仅供XF平台内部使用。尽管如此,您可以通过
CanExecute命令的委托来处理用户触发操作的能力,而不是启用/禁用按钮本身。 -
@DiegoRafaelSouza 我将如何去做,你能发布答案吗?我可以看到要调用的方法,但是无论如何我似乎都无法与它们进行交互
SaveData.RaiseCanExecuteChanged();或SaveEvent.CanExecute(); -
@SushiHangover 已经做到了。太完美了=)
标签: xamarin xamarin.forms