2017-08-29 63 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上似乎工作正常。

希望這會有所幫助.-