我有一个表单,用户可以在其中输入一些数据并将其保存到数据库中。我一直在尝试添加基本验证,使用户必须在每个字段中输入值。我希望我的保存按钮不可用,直到用户在每个表单中输入了一些信息。
这是我的按钮:
<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.
实现此功能的唯一方法是使用自定义渲染器吗?
答案 0 :(得分:2)
MenuItem.IsEnabledProperty /供Xamarin.Forms平台内部使用。
您应该使用Command
的{{1}} CanExecute
来确定是否可以触发ToolbarItem
方法。
由于您已将命令绑定到Execute
,因此您可以切换该命令的SaveDataCommand
的返回值,以确定是否应允许菜单项按钮触发附加命令。
你没有发布你的ViewModel,但是在内部类CanExecute
实现中,有一些简单的工作:
ICommand