[Xamarin] button及事件处理

在visual studio + Genymobile 的调试环境下,遇到连不上虚机的情况,在Xamarin官方论坛上找到解决方案,如下:

主要就是去android的project属性调整几个值

Couldn‘t connect to logcat, GetProcessId returned: 0

Open your application properties Android Manifest -->Required Permission -->Enable ACCESS_COARSE_LOCATION and INTERNET(tick) Android Options --> Supported Architecture -->Enable armeabi and armeabi-v7a

Button,昨天的都是一些显示相关的基础控件,button算是第一个交互控件,示例代码如下,绑定事件即可用,C#码农在VS下tab两下自动就生成对应事件函数啦~

Button的properties并不是每个都支持所有平台(iOS Android WP),需要参考下API doc

示例的结构:首先还是新建一个继承contentPage的类,最外层用的是StackLayout,直接赋值到content属性上。StackLayout按顺序放一个button和ScrolView,ScrolView再包含一个预先定义成field的StackLayout用来存放之后动态生成的Label,button的click事件里实现动态添加一个Label到LoggerLayout里

    class ButtonLoggerPage: ContentPage
    {
        StackLayout loggerLayout = new StackLayout();

        public ButtonLoggerPage()
        {
            //Create the Button and attach Clicked handler
            Button button = new Button
            {
                Text = "Log the Click Time"
            };
            button.Clicked += button_Clicked;

            this.Padding = new Thickness(5,Device.OnPlatform(20,0,0),5,0);

            //Assemble the page
            this.Content = new StackLayout
            {
                Children =
                {
                    button,
                    new ScrollView
                    {
                        VerticalOptions = LayoutOptions.FillAndExpand,
                        Content = loggerLayout
                    }
                }
            };
        }

        void button_Clicked(object sender, EventArgs e)
        {
            //Add Laabel to scrollable StackLayout
            loggerLayout.Children.Add(new Label { 
                Text = "Button clicked at" + DateTime.Now.ToString("T")
            });
        }
    }

效果如下,其中button在点击的时候,背景色会改变:

walking the tree

类似HTML 或 XAML,控件之间可以通过visual tree查询,上面例子的事件处理函数中,直接使用了loggerLayout变量,也可以通过sender参数找过去,示例如下

            //another way to find loggerLatout
            Button button = (Button)sender;
            StackLayout outerLayout = (StackLayout)button.ParentView;
            //second one is scrollView
            ScrollView scrollView = (ScrollView)outerLayout.Children[1];
            StackLayout loggerLayout_2 = (StackLayout)scrollView.Content;

例子主要用来说明visual tree的使用,就示例本身来说,来回的强制转换肯定影响性能,同时如果改变了layout结构,相应的代码也要调整,不过还没有去查API有没有支持find by id之类的方式

Sharing button clicks

这个和C#里大多数事件处理机制相同,把多个控件的click事件绑定(+=)到同一个处理函数即可

Anonymous event handlers

使用C#的Lambda特性实现匿名事件函数,示例:

button.Clicked += (sender,args) =>
    {
        //statement
    }

Distinguishing views with IDs

Element 基类定义了一个string类型的StyleId,用来设置用户自定义的id,有点value/tag的意思吧

所以普通的button控件都可以设置这个值

    public abstract class Element : BindableObject, IElement, INameScope
    {
        //
        // Summary:
        //     Gets or sets a user defined value to uniquely identify the element.
        //
        // Remarks:
        //     Use the StyleId property to identify individual elements in your application
        //     for identification in ui testing and in theme engines.
        public string StyleId { get; set; }

明天进入 Infrastructure部分!!

时间: 2024-10-11 13:15:08

[Xamarin] button及事件处理的相关文章

ios开发之自己定义默认生成的导航栏 标题 颜色 返回button

一 改动导航栏颜色    导航栏在哪个页面代码放在那里面 self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:(21.0/255.0) green:(153.0 / 255.0) blue:(224.0 / 255.0) alpha:1];                                                   //定义导航栏颜色 self.navigationItem.t

WindowsForm应用程序调用WebService

本文原创,如需转载,请标明源地址,谢谢合作!http://blog.csdn.net/sue_1989/article/details/6597078 本文的编写IDE为VSTS2008和.NET Framework3.5 ,其他版本的VS或.Net Framework类似 本示例程序说明:从WinForm程序调用本机的WebServices的方法,返回两个数的和 1. 新建>>项目>>ASP.NET Web 服务应用程序,命名为 WebServiceTest,OK 2.打开Ser

Delphi 2007体验!

Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第一时间下载.安装并进行了体验,现将一些使用感受记录例如以下 CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第一时间下载.安装并进行了体验,现将一些使用感受记录例如以下: 注:以下的对照主要是针对Del

VS2013 MFC ODBC连接SQL SERVER数据库编程(三)

VS2013 MFC ODBC连接SQL SERVER数据库编程(三) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 继上一篇讲完对数据库的链接以及一些说明之后,本文将实现对数据库的增删查改等操作. 如上图所示就是最终完成的一个简单的小程序. 首先添加列表框的NM_CLICK响应程序.鼠标放在列表框上,右键->添加事件处理程序,找到MN_CLICK消息,添加并编辑,如下图所示. 在响应函数里面添加如下代码: 这样就实现了,点

Cocos2d-JS中使用CocosStudio资源——帧动画(2)

在本篇博客中,我们将通过一个在Cocos2d-JS中使用从CocosStudio导出的帧动画资源的例子,来简要介绍以下内容:利用ActionTimeLine进行动画切割,如何使用导出的帧动画资源.关于帧动画,由于内容繁杂.我们将分为两篇进行介绍.在上一篇中,我们已经做好了前期的资源准备和CocosCodeIDE中的简单处理,本篇将主要介绍资源的使用问题. 一.使用CocosStudio资源 做好了前期的准备工作,终于到我们的重头戏(FrameAnimationScene.js)了,下面,我们将要

JavaScript笔记及总结

前言: 网页中HTML为内容,CSS做展现(修饰内容),Js为行为(交互). Js属于基于对象型的脚本语言,在学习时当作编程语言(如java,c#)学习更好理解. javascript是实现网页动态效果,也是ajax/jquery/extjs(后话)等框架的基础. 三个篇目:基础篇,面向对象篇,DOM篇. 重点DOM编程,面向对象编程稍次之. Author:ymm1874 2012-12-08 Ⅰ  基础篇 一,JS属于脚本语言,往往不独立使用,一般嵌套在html/asp/jsp/php等页面中

iOS开发——定制圆形头像与照相机图库的使用

如今的App都很流行圆形的头像,比方QQ右上角的头像,今日头条的头像等等.这已经成为App设计的趋势了.今天我们就来简单实现一下这个功能,我还会把从手机拍照中或者图库中取出作为头像的照片存储到应用程序沙盒中. 下次进入应用的时候还会显示该头像. 演示样例代码上传至:https://github.com/chenyufeng1991/AvatarPhoto  . (1)该demo使用storyboard进行实现.首先拖入一个ImageView用来显示头像和一个button. 并拖拽到代码中进行绑定

JavaScript中的两种事件流

JavaScript中的两种事件流 事件流描述的是从页面中接收事件的顺序.提出事件流概念的正是IE和Netscape,但是前者提出的是我们常用的事件冒泡流,而后者提出的是事件捕获流. 第一部分:事件冒泡 即事件开始由最具体的元素接收,然后逐级向上传播到较为不具体的节点(文档). 下面举一个简单的例子: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&

AndroidUI组件之ActionBar

有一段时间没有写博文了,发现自己的博文的完整度不是非常好.就拿AndroidUI组件这一块.一直没有更新完.我会尽快更新.好了.不多说了,今天来看一下ActionBar. 依照以往的作风.知识点都以代码凝视的形式在源码中. package com.gc.actionbardemo; /** * 1.活动条(ActionBar)是Android3.0的重要更新之中的一个. ActionBar位于传统标题栏的位置 * 也就是显示的屏幕的顶部.ActionBar可显示应用的图标和Activity标题-