具有绑定属性的图像IsEnabled不能使用Xamarin表单

时间:2017-08-29 15:20:11

标签: c# xaml xamarin xamarin.forms

在Android设备上使用Xamarin表格-pcl v 2.3.4.267 -Debug

我有一个用作按钮的图像

          <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
           /> 

正如我在代码中提到的,Is Visible Works Great但是启用它什么也没做。

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

4 个答案:

答案 0 :(得分:1)

这是Xamarin中的一个已知问题,已经报告here,应该在未来版本的Xamarin.Forms中修复,更具体地说,版本 2.4.0-pre

作为解决方法,您可以使用IsSubmitEnabled作为df = pd.DataFrame( np.random.choice( np.arange(6), size=(100, 2), p=np.arange(1, 7) / 21 ), columns=list('AB') ) c = pd.crosstab(df.A, df.B).stack().reset_index(name='C') c.plot.scatter('A', 'B', s=c.C * 10) CanExecute参数的参数。

这样的事情:

Command

但您还需要在Property setter中添加一行public MyViewModel() { Login = new Command(() => OnLogin(), () => IsSubmitEnabled); }

Login.CanExecute(null);

这应该同时起作用。直到修复工作正在进行中。

注意:仅仅是为了获取信息,这个问题似乎只发生在Android上,而在iOS上似乎工作正常。

希望这会有所帮助.-

答案 1 :(得分:0)

您是否同时使用这两种语句?

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

然后IsEnabled = false仅在按钮不可见时才有效,因为两者都绑定到相同的布尔属性=&gt; IsSubmitEnabled。

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

答案 2 :(得分:0)

如果您在启用属性false时想要无法点击,请执行以下操作

由于 IsVisible IsEnable 的第一个绑定属性必须不同。

<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}"
           />

您可以在ViewModel中更改代码,如:

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

答案 3 :(得分:0)

根据this post,如果我们在绑定命令之前绑定IsEnabled属性,则属性将不会触发。我遇到了同样的问题,并在Command绑定后移动了IsEnabled绑定,并正确设置了IsEnabled属性。

希望有所帮助