第12章 样式(二)
程序员文章站
2022-03-02 22:26:25
...
代码中的样式
尽管样式大多是在XAML中定义和使用的,但您应该知道在代码中定义和使用它们时的样子。 这是仅代码的BasicStyleCode项目的页面类。 BasicStyleCodePage类的构造函数使用对象初始化语法来模拟定义Style对象并将其应用于三个按钮时的XAML语法:
public class BasicStyleCodePage : ContentPage
{
public BasicStyleCodePage()
{
Resources = new ResourceDictionary
{
{ "buttonStyle", new Style(typeof(Button))
{
Setters =
{
new Setter
{
Property = View.HorizontalOptionsProperty,
Value = LayoutOptions.Center
},
new Setter
{
Property = View.VerticalOptionsProperty,
Value = LayoutOptions.CenterAndExpand
},
new Setter
{
Property = Button.BorderWidthProperty,
Value = 3
},
new Setter
{
Property = Button.TextColorProperty,
Value = Color.Red
},
new Setter
{
Property = Button.FontSizeProperty,
Value = Device.GetNamedSize(NamedSize.Large, typeof(Button))
},
new Setter
{
Property = VisualElement.BackgroundColorProperty,
Value = Device.OnPlatform(Color.Default,
Color.FromRgb(0x40, 0x40, 0x40),
Color.Default)
},
new Setter
{
Property = Button.BorderColorProperty,
Value = Device.OnPlatform(Color.Default,
Color.White,
Color.Black)
}
}
}
}
};
Content = new StackLayout
{
Children =
{
new Button
{
Text = " Carpe diem ",
Style = (Style)Resources["buttonStyle"]
},
new Button
{
Text = " Sapere aude ",
Style = (Style)Resources["buttonStyle"]
},
new Button
{
Text = " Discere faciendo ",
Style = (Style)Resources["buttonStyle"]
}
}
};
}
}
在代码中比在XAML中更明显的是Setter的Property属性是BindableProperty类型。
此示例中的前两个Setter对象使用名为View.HorizontalOptionsProperty和View.VerticalOptionsProperty的BindableProperties对象进行初始化。 您可以使用Button.HorizontalOptionsProperty和Button.VerticalOptionsProperty,因为Button从View继承这些属性。 或者,您可以将类名更改为从View派生的任何其他类。
像往常一样,在代码中使用ResourceDictionary似乎毫无意义。 您可以消除该选项,只需将Style对象直接指定给按钮的Style属性即可。 但是,即使在代码中,Style也是将所有属性设置捆绑到一个紧凑包中的便捷方式。
推荐阅读
-
开坑,写点Polymer 1.1 教程第6篇--样式(2)_html/css_WEB-ITnose
-
Android编程实现自定义ProgressBar样式示例(背景色及一级、二级进度条颜色)
-
iOS 定制多样式二维码
-
找出链表倒数第n个节点元素的二个方法
-
BarTender条码打印怎么打印二维码样式的标签?
-
BarTender条码打印怎么打印二维码样式的标签?
-
Python实现查找二叉搜索树第k大的节点功能示例
-
一个模仿oso的php论坛程序源码(之二)第1/3页
-
SQL Server 索引结构及其使用(二) 改善SQL语句第1/3页
-
asp.net下用url重写URLReWriter实现任意二级域名的方法第1/2页