一个好老好老的老程序员了。
全部博文(915)
发布时间:2018-08-06 22:04:48
Xamarin.Forms应用程序通常包含具有相同属性设置的多个元素。例如,您可能有几个具有相同颜色,字体大小和布局选项的按钮。在代码中,您可以为循环中的多个按钮指定相同的属性,但在XAML中不能使用循环。如果您想避免大量重复标记,则需要另一种解决方案。解决方案是Style类,它是在一个conient对象中合并的属性设置的集.........【阅读全文】
发布时间:2018-08-05 14:46:51
只读可绑定属性假设您正在使用一个应用程序,在该应用程序中,可以方便地知道Label元素显示的文本中的单词数。 也许您希望将该工具直接构建到源自Label的类中。 我们称这个新类为CountedLabel。到目前为止,您首先想到的是定义一个名为WordCount?属性的BindableProperty对象和一个名为WordCount的相应CLR属性。但是等一.........【阅读全文】
发布时间:2018-08-03 22:26:02
定义可绑定属性假设您想要一个增强的Label类,它允许您以点为单位指定字体大小。 让我们将这个类AltLabel称为“替代标签”。它派生自Label并包含一个名为PointSize的新属性。PointSize应该由可绑定属性支持吗? 当然! (虽然这样做的真正好处直到下一章才会得到证明。)仅代码的AltLabel类包含在Xamarin.FormsBook.........【阅读全文】
发布时间:2018-08-01 22:23:24
查看BindableObject和BindableProperty名为BindableObject和BindableProperty的类的存在最初可能有点令人困惑。请记住,BindableObject与Object非常相似,因为它充当了Xamarin.Forms API的一大块基类,特别是Element和VisualElement。BindableObject为BindableProperty类型的对象提供支持。 BindableProperty对象扩.........【阅读全文】
发布时间:2018-07-31 22:17:02
C#最基本的语言结构之一是称为属性的类成员。 在我们第一次遇到C#的时候,我们所有人都学会了定义属性的一般例程。 该属性通常由私有字段支持,并包含引用pri?vate字段的set和get访问器,并使用新值执行某些操作:点击(此处)折叠或打开public class MyClass{&n.........【阅读全文】
发布时间:2018-07-30 21:30:59
较少使用的标记扩展三个标记扩展名的使用量与其他扩展名不同。 这些是:x:Nullx:Typex:Array您使用x:Null扩展名将属性设置为null。 语法如下所示:点击(此处)折叠或打开<SomeElement SomeProperty="{x:Null}" />这没有多大意义,除非SomeProperty.........【阅读全文】
发布时间:2018-07-28 14:05:44
用于特殊目的的动态资源用于引用Resources字典中的项的StaticResource的替代方法是DynamicResource,如果您在上面的示例中仅使用DynamicResource替换StaticResource,则程序似乎运行相同。但是,这两个标记扩展非常不同。在解析XAML并构建页面时,StaticResource仅访问字典中的项目一次。但DynamicResource维护字典键和该.........【阅读全文】
发布时间:2018-07-26 22:25:53
一本词典树ResourceDictionary类与其他字典施加相同的规则:字典中的所有项必须具有键,但不允许重复键。但是,因为VisualElement的每个实例都可能有自己的资源字典,所以您的页面可以包含多个字典,只要每个字典中的所有键都是唯一的,您就可以在不同的字典中使用相同的键。可以想象,可视化树中的每个可视元素都可以拥.........【阅读全文】
发布时间:2018-07-25 22:21:36
资源词典Xamarin.Forms还支持第二种共享对象和值的方法,虽然这种方法比x:静态标记扩展稍微有点开销,但它更通用 - 因为所有东西 - 共享对象和使用的可视元素 它们 - 可以用XAML表示。VisualElement定义了一个名为Resources的属性,它属于ResourceDictionary类型 - 一个带有字符串键和类型为object的值的字典。 可.........【阅读全文】
发布时间:2018-07-24 21:55:53
访问静态成员IMarkupExtension最简单和最有用的实现之一封装在StaticExtension类中。 这是原始XAML规范的一部分,因此它通常出现在带有x前缀的XAML中。 StaticExtension定义了一个名为Member of string的属性,您可以将其设置为公共常量,静态属性,静态字段或枚举成员的类和成员名称。让我们看看它是如何工作的。 .........【阅读全文】
发布时间:2018-07-18 15:02:55
在代码中,您可以从各种不同的来源以各种不同的方式设置属性:triangle.Angle1 = 45;triangle.Angle1 = 180 * radians / Math.PI;triangle.Angle1 = angles[i];triangle.Angle1 = animator.GetCurrentAngle();如果此Angle1属性为double,则所需的只是source为double或以其他方式提供可转换为double的数值。但是.........【阅读全文】
发布时间:2018-07-16 21:27:22
特定于平台的声音生成现在为了本章的真正目的:给MonkeyTap发声。所有三个平台都支持API,允许程序动态生成和播放音频波形。这是MonkeyTapWithSound程序采用的方法。商业音乐文件通常以诸如MP3之类的格式压缩。但是当一个程序算法算法生成波形时,未压缩的格式会更加方便。最基本的技术 - 所有三个平台都支持 - 称为.........【阅读全文】
发布时间:2018-07-15 15:29:53
依赖服务和可移植类库PlatInfoSap2程序中说明的技术是否可以在具有可移植类库的解决方案中实现? 起初,它似乎不可能。 虽然应用程序项目一直调用库,但是除了事件或回调函数的上下文之外,库通常不能调用应用程序。 PCL与独立于设备的.NET版本捆绑在一起,只能在其自身或其他可能引用的PCL中执行代码。但是等待:.........【阅读全文】
发布时间:2018-07-14 11:06:55
并行类和共享资产项目虽然共享资产项目是平台项目的扩展,但这种关系是双向的:正如平台项目可以调用共享资产项目中的代码一样,SAP可以调用各个平台项目。这意味着我们可以将特定于平台的API调用限制为各个平台项目中的类。 如果平台项目中这些类的名称和名称空间相同,那么SAP中的代码可以透明,独立于平台的方式.........【阅读全文】
发布时间:2018-07-12 20:54:53
紧急情况已经出现。任何玩过上一章的MonkeyTap游戏的人都会很快得出结论,它迫切需要一个非常基本的增强功能,而且它根本不可能在没有它的情况下存在。MonkeyTap需要声音。它不需要非常复杂的声音 - 伴随着四个BoxView元素的闪光,只需要几声嘟嘟声。但是Xamarin.Forms API不支持声音,所以声音不是我们可以通过几个API.........【阅读全文】
发布时间:2018-07-11 21:16:52
点按手势Xamarin.Forms按钮响应手指点击,但您实际上可以从任何派生自View的类中获取手指点击,包括Label,BoxView和Frame。 这些点击事件不会内置到View类中,但View类会定义名为GestureRecognizers的属性。 通过向此GestureRecognizers集合添加对象来启用点击。 可以将从GestureRecognizer派生的任何类的实例添加到.........【阅读全文】
发布时间:2018-07-10 21:51:39
事件和处理程序当您点击Xamarin.Forms按钮时,它会触发Clicked事件。 您可以在XAML中实例化Button,但Clicked事件处理程序本身必须驻留在代码隐藏文件中。 Button只是主要用于生成事件的一组视图中的一个,因此处理事件的过程对于协调XAML和代码文件至关重要。将事件处理程序附加到XAML中的事件就像设置属性一样简单.........【阅读全文】
发布时间:2018-07-08 15:46:13
自定义基于XAML的视图上一章中的ScaryColorList程序使用Frame,BoxView和Label在StackLayout中列出了一些颜色。即使只有三种颜色,重复标记也开始变得非常不祥。遗憾的是,没有XAML标记复制C#for和while循环,因此您可以选择使用代码生成多个类似的项目,或者在标记中找到更好的方法。在本书中,您将看到几种在XAML.........【阅读全文】
发布时间:2018-07-08 15:43:39
x:Name属性在大多数实际应用程序中,代码隐藏文件需要引用XAML文件中定义的元素。 您在上一章的CodePlusXaml程序中看到了一种方法:如果代码隐藏文件知道XAML文件中定义的可视树的布局,它可以从根元素(页面本身)开始, 找到树中的特定元素。 此过程称为“在树上行走”,可用于定位页面上的特定元素。通常,更好的.........【阅读全文】
发布时间:2018-07-06 15:23:11
代码文件和XAML文件始终作为一对存在。 这两个文件相互补充。 尽管被称为XAML的“代码隐藏”文件,但代码在处理应用程序的更活跃和交互式部分时经常显得尤为突出。 这意味着代码隐藏文件必须能够像在代码中实例化的对象一样轻松地引用XAML中定义的元素。 同样,XAML中的元素必须能够触发在基于代码的事件处理程序中处.........【阅读全文】
发布时间:2018-07-06 11:56:53
内容属性特性ScaryColorList程序中的XAML文件实际上比它需要的时间稍长。 您可以删除ContentPage.Content标签,所有StackLayout.Children标签和所有Frame.Content标签,并且程序的工作原理是相同的:点击(此处)折叠或打开<ContentPage xmlns="http://xamarin.com/schemas/2014/forms.........【阅读全文】
发布时间:2018-07-06 11:48:34
XAML编译器您可以选择是否在构建过程中编译XAML。 编译XAML可以在构建过程中进行有效性检查,减少可执行文件的大小,并缩短加载时间,但这比非编译方法稍微新一些,所以有时可能会出现问题。为了表明您想要编译应用程序中的所有XAML文件,可以在代码文件中的某个位置插入下面的程序集属性。 最方便的地方是PCL项目的.........【阅读全文】
发布时间:2018-07-06 11:36:23
将XAML页面添加到您的项目现在您已经看到了一些XAML片段,让我们看一个完整程序环境中的整个XAML页面。 首先,使用可移植类库解决方案模板创建一个名为CodePlusXaml的Xamarin.Forms解决方案。现在将一个XAML ContentPage添加到PCL。 操作方法如下:在Visual Studio中,右键单击解决方案资源管理器中的CodePlusXaml.........【阅读全文】
发布时间:2018-06-24 18:45:50
属性元素语法这里有一些C#与第4章中的FramedText代码相似。在一个语句中,它实例化一个Frame和一个Label,并将Label设置为Frame的Content属性:new Frame{ OutlineColor = Color.Accent, HorizontalOptions = LayoutOptions.Center, VerticalOptions = LayoutOptions.Center, Content = new Label .........【阅读全文】