2017-08-29 131 views
2

使用-PCl v 2.3.4.267 -Debug在Android设备Xamarin形式图像的IsEnabled与绑定属性不起作用Xamarin窗体

我有被用作按钮

  <Image Source="loginbutton.png"   
      Aspect="AspectFit" 
      HorizontalOptions="Fill" 
      Margin="50,20,50,0" 
      fe:TappedGestureAttached.Command="{Binding Login}" 
      IsVisible ="{Binding user.IsSubmitEnabled}"<---works fine 
      IsEnabled="{Binding user.IsSubmitEnabled}"<---Does nothing 
      /> 

我的图片在代码中提到“可见工程伟大但是已启用”并没有做任何事情。

注意:如果有任何解决方法,请分享。

+1

你期望它做什么? –

+0

该图片将无法显示 –

+1

至少作为一种解决方法,您可以尝试使用InputTransparent属性 –

回答

0

您是否同时使用两个语句?

IsVisible ="{Binding user.IsSubmitEnabled}"<---works fine 
IsEnabled="{Binding user.IsSubmitEnabled}"<---Does nothing 

接着的IsEnabled =假是如果按钮是不可见的唯一活性,因为二者都结合相同的布尔属性=> IsSubmitEnabled。

也许你必须使用第二个布尔绑定属性?

+0

不,我单独尝试每一个IsVisible工作正常,并根据绑定值的变化而改变其状态,但IsEnable和输入除了我使用IsEnable和Image之外,透明值不会根据绑定值的变化而改变。 –

0

如果你想不可点击,当您启用属性假你做如下

由于首先结合ISVISIBLEIsEnable的财产必须是不同的。

<Image Source="loginbutton.png"   
      Aspect="AspectFit" 
      HorizontalOptions="Fill" 
      Margin="50,20,50,0" 
      fe:TappedGestureAttached.Command="{Binding Login}" 
      IsVisible ="{Binding user.IsSubmitVisible}" 
      IsEnabled="{Binding user.IsSubmitEnabled}" 
      /> 

并且更改了代码视图模型,如:

public void Login() 
    { 
     If(IsSubmitEnabled){ 
      // Put your code here 
     } 
    } 
1

这在Xamarin一个已知的问题,已经报告here,并将其固定在Xamarin.Forms的未来版本中,更具体的版本2.4.0-pre

作为解决方法,您可以使用IsSubmitEnabled作为Command中参数CanExecute的参数。

事情是这样的:

public MyViewModel() 
{ 
    Login = new Command(() => OnLogin(),() => IsSubmitEnabled); 
} 

但是你需要在你的属性setter添加一行Login.CanExecute(null);了。

private bool _isSubmitEnabled; 
public bool IsSubmitEnabled 
{ 
    get { return _isSubmitEnabled; } 
    set 
    { 
     _isSubmitEnabled= value; 
     RaisePropertyChanged(nameof(IsSubmitEnabled)); 
     Login.CanExecute(null); 
    } 
} 

这应该在同时工作。直到修复正在生产中。

注意:仅供参考,这个问题似乎只在Android上发生,而在iOS上似乎工作正常。

希望这会有所帮助.-