Xamarin.Forms之Button

为什么要讲Button,不管是何种UI系统,Button始终是一种很最常见的控件,但是Forms中得Button在使用的过程是出现了一些问题,特此记录一下

1.IsEnabled属性

即使设置了Button得背景色,当IsEnabled="false"的时候,背景色会变成灰色,文字也是会变成灰色

2.IsEnable属性无效的问题

的确有人遇到过这个问题,直接设置IsEnabled="false",Button居然该是可以点击,这就是一个BUG,截止到v2.2版本,Forms依旧没有解决

改问题的原因是Command与IsEnabled冲突导致的,如果在Xaml中Command放在IsEnabled的后面,则会出现上面的问题

<Button  Grid.Column="2" Text="点我" IsEnabled="{Binding signIsEnabled}"  Command="{Binding SignMessage}"  Style="{StaticResource DialogButtonStyle}"/>

目前有两种解决方法:

1).在Command中,设置CanExecute直接返回绑定的signIsEnabled,

new Command(()=>{},()=>isSignEnabled);

这样在isSignEnabled直接设置为false的时候,也是有效的

2).在XAML中,将IsEnabled放在Command的后面,就一切OK了

<Button  Grid.Column="2" Text="点我"   Command="{Binding SignMessage}"   IsEnabled="{Binding signIsEnabled}"   Style="{StaticResource DialogButtonStyle}"/>

  

时间: 2024-08-24 21:08:51

Xamarin.Forms之Button的相关文章

Xamarin.Forms 监听Button的按下、释放事件

Xamarin.Forms 监听Button的按下.释放事件 工作中遇到这样的一个需求,模仿微信发生语音功能,需要实现按钮按下开始录音,按钮释放录音结束, Xamarin.Forms中Button没有这样的事件,那么我们如何实现对Button按下,释放两个事件的监听呢? 当然这里我们再次用到了CustomRenderer,一旦遇到Xamrin.Forms无法实现的某些功能,我们就可以 通过CustomRenderer来处理. 首先:我们自定义一个VoiceRecordButton继承于Butto

xamarin forms中的Button文本默认大写

问题来源 使用xamarin forms创建的android项目中,Button.Toolbar的右侧菜单按钮上的如果是字母的话,在android5.0以上,默认的文本都是大写,这种情况iOS项目不存在,是正常的显示.google公司把android的文本默认大写,这个肯定和英语国家阅读习惯有关,但是iOS却是正常显示,有点难以解释google为什么将android的按钮文本默认成大写.问题如图: 分析 其实这个问题的产生的原因还是因为 在5.0中在Button使用的Theme是这个,默认已经t

Xamarin.Forms TapGestureRecognizer 实现点击事件

Xamarin.Forms TapGestureRecognizer实现点击事件 在开发过程中使用点击事件是不可避免的,在Xamarin.Forms中Button有明确的点击(Clicked)事件, 但是很多其他的控件并没有点击事件,比如:Image.Label.这时我们该如何解决点击问题呢? 当然是GestureRecognizers啦,怎么使用呢,待我徐徐道来. Xaml代码: <Label Text="0"> <Label.GestureRecognizers&

菜鸟的Xamarin.Forms前行之路——原生Toast的简单实现方法

项目中信息提示框,貌似只有个DisplayAlert,信息提示太过于单一,且在有些场合Toast更加实用,以下是一个简单的原生Toast的实现方法 项目地址:https://github.com/weiweu/TestProject/tree/dev/Toast 共享项目 定义一个接口IToast,包括Short和Long两个方法: public interface IToast { void LongAlert(string message); void ShortAlert(string m

Xamarin.Forms之Effects的使用

在 Xamarin.Forms 2.1.0-pre1 ,Xamarin.Forms新增了新的Effects API. Effects是一系列方法,为了给View的渲染器添加运行时改变. 然而,我想强调的是, Effects天生被设计为高可复用的. 如果一个Effect能够解决一个难题, 它可能能够在你的整个APP中使用.如果你写了一个Effect来解决你的一个难题, 你能够分享它给其他遇到同样问题的人. 这篇文章尝试展示一种方式,能够帮助我们使分享Effects这件事变得很简单. public

菜鸟的Xamarin.Forms前行之路——按钮的按下抬起事件的监控(可扩展至其他事件)

提问:监控按钮的点击事件,可以通过按钮的Click事件,或者Command绑定,那么如何监控按钮的按下与抬起,或者移动,长按,双击等事件? 解决方法:各个平台自定义渲染依赖注入. 共享项目PCL: 1先定义一个继承Button的实体类NewButton.cs public class NewButton : Button { public event EventHandler Pressed; public event EventHandler Released; public virtual

Xamarin.Forms bug? System.ObjectDisposedException: Cannot access a disposed object

Hi, My Android Xamarin.Forms application uses a Navigation stack to display various views, I often have a list on a screen (A) that once a cell is clicked I push onto the stack a new screen (B), the user completes some form fields and then clicks a b

演练:使用Xamarin.Forms开发产品介绍性质的应用(VB版)

概述 Xamarin这个使用mono和.net core的跨平台开发框架这几年在不断发展.被微软收购后的Xamarin为个人开发者提供了免费版的Xamarin for Visual Studio,吸引了更多开发人员的关注. Xamarin.Forms用起来比较方便,因为用这种方式编写一次就能到处运行.但是不知道为什么,Xamarin目前只完整支持C#.他们宣称支持的F#实际上只是比C#多了一些文档和不常用的工具上的支持,缺少Xaml后代码生成器等重要功能支持. 而VB就更受冷落了.用户建议Xam

Xamarin.Forms XAML的辅助功能Code Snippet

Xamarin.Forms XAML的辅助功能Code Snippet 在Visual Studio中,使用Code Snippet(代码片段)功能可以减少基础代码的编写量,如常见的标签.循环语句等.Xamarin.Forms中使用的XAML语言的标签往往都比较长,可以重复利用Code Snippet功能进行简化.用户可以使用第三方插件Snppetica实现该功能.该插件为C#.VB.C++.XML.XAML.HTML提供了代码片段功能.其中,它为XAML提供了89个代码片段.安装该插件后,用户