Я пробовал множество способов воскресенья, чтобы заставить это работать, но мне явно не хватает что-то , потому что моя кнопка "Register
" имеет значение , а не . независимо от того, что я делаю.
В моем XAML:
<Button Text="Register"
Style="{StaticResource RegularButtonStyle}"
WidthRequest="280"
x:Name="RegisterButton">
<!-- I HAD the following, but it wasn't working so I finally decided to try DataTriggers -->
<!-- bindings:Bi.nd="Clicked RegisterButtonClickedCommand;IsEnabled IsRegisterButtonEnabled"> -->
<Button.Triggers>
<DataTrigger TargetType="Button"
Binding="{Binding IsRegisterButtonEnabled}"
Value="False">
<Setter Property="IsEnabled" Value="False"></Setter>
</DataTrigger>
<DataTrigger TargetType="Button"
Binding="{Binding IsRegisterButtonEnabled}"
Value="True">
<Setter Property="IsEnabled" Value="True"></Setter>
</DataTrigger>
</Button.Triggers>
</Button>
В ViewModel:
public class RegisterViewModel : MvxViewModel
{
...
private bool _isRegisterButtonEnabled;
public bool IsRegisterButtonEnabled
{
get => ShouldEnableRegisterButton();
set
{
_isRegisterButtonEnabled = value;
SetProperty(ref _isRegisterButtonEnabled, value);
}
}
...
public IMvxCommand RegisterButtonClickedCommand { get; private set; }
...
private void InitializeCommands()
{
...
RegisterButtonClickedCommand = new MvxCommand(RegisterUser);
}
...
private bool ShouldEnableRegisterButton()
{
var isValidUser = _userName.Validate();
var isValidPass = _password.Validate();
var isValidConfirmedPass = _confirmedPassword.Validate();
var shouldEnable = isValidUser && isValidPass && isValidConfirmedPass;
_mvxLogger.Log(MvxLogLevel.Trace, () => $"RegisterViewModel : ShouldEnableRegisterButton() called. Returning: {shouldEnable}");
return shouldEnable;
}
...
}
Я прочитал MvvmCross "Документация", но это всеразговорный, и я не могу найти каких-либо КОНКРЕТНЫХ примеров привязки к свойству IsEnabled кнопки с достаточной спецификой, чтобы попасть туда.
Конечно, буду признателен за помощь. :)
Хозяйственная информация: я использовал следующие пакеты NuGet (/ библиотеки)
- MvvmCross & MvvmCross.Forms v6.3.1
- Xamarin.Forms v4.0.0.497661
- Xamarin.Android. * Libs is all v28.0.0.1
Затем подумал, что мне следует обновить, поскольку есть доступные обновления, поэтому я обновился до следующего;
- MvvmCross & MvvmCross.Forms v6.4.1
- Xamarin.Forms v4.2.0.848062
- Xamarin.Android. * Все библиотеки теперь v28.0.0.3
Также используется .Net Standard v2.0.3 для общих ресурсов.