DevExpress的提供的内置,可以应用到主题GridControl改变其外观。

 

主题

iOS版

Android版


(默认适用于iOS)

黑暗
(默认为Android)

应用预定义的主题

主题类存储提供的主题名称。要更改主题,分配主题类的相应字段的ThemeManager.ThemeName

 

 
 

C#

  

using Xamarin.Forms;

using DevExpress.Mobile.DataGrid.Theme;

 
 

// ...  

 
 

ThemeManager.ThemeName = Themes.Dark;

 
 

// ...  

 
 

自定义主题

要自定义应用的主题,使用ThemeBase类。它为您提供各种定制,使您可以更改主题的外观,并将其应用到电网。您可以使用这些定制来改变背景颜色,字体和所需的网格单元(头,属性组行等)

重要

要应用定制,调用ThemeManager.RefreshTheme方法。

ThemeBase类的属性提供访问不同的定制,你可以调整来改变外观设置(例如,字体属性,边框和背景颜色等)网格的相应的视觉元素(如数据单元格,行分组过滤器面板等)。在本实施例中,使用下面的定制。

 
 

为了跟踪时刻变化的主题,无论是处理ThemeManager.ThemeChanged事件或使用IThemeChangingHandler.OnThemeChanged方法。

这个例子定制光主题,因为它是在下面的图片中显示。

 
 

 

 
 

C#:MainPage.xaml.cs

  

using System;

using System.Collections.Generic;

using Xamarin.Forms;

using DevExpress.Mobile.DataGrid;

using DevExpress.Mobile.DataGrid.Theme;

 
 

namespace ThemeCustomizing {

 
 

public
partial
class MainPage : ContentPage {

 
 

int count = 0;

public MainPage() {

 
 

InitializeComponent();

 
 

 
 

TestOrdersRepository model = new TestOrdersRepository();

BindingContext = model;

 
 

ThemeManager.ThemeName = Themes.Light;

 
 

// Header customization.

ThemeManager.Theme.HeaderCustomizer.BackgroundColor = Color.FromRgb(187, 228, 208);

ThemeFontAttributes myFont = new ThemeFontAttributes("Verdana",

ThemeFontAttributes.FontSizeFromNamedSize(NamedSize.Large),

FontAttributes.None, Color.White);

ThemeManager.Theme.HeaderCustomizer.Font = myFont;

 
 

 
 

// Cell customization.

ThemeManager.Theme.CellCustomizer.SelectionColor = Color.FromRgb(186, 220, 225);

ThemeFontAttributes myFont1 = new ThemeFontAttributes("Verdana",

ThemeFontAttributes.FontSizeFromNamedSize(NamedSize.Medium),

FontAttributes.None, Color.Black);

ThemeManager.Theme.CellCustomizer.Font = myFont1;

 
 

 
 

// Various customization.

ThemeManager.Theme.TotalSumaryCustomizer.BackgroundColor = Color.FromRgb(163, 162, 168);

ThemeFontAttributes myFont2 = new ThemeFontAttributes("Verdana",

ThemeFontAttributes.FontSizeFromNamedSize(NamedSize.Default),

FontAttributes.None, Color.Black);

ThemeManager.Theme.TotalSummaryCustomizer.Font = myFont2;

ThemeManager.Theme.NewItemRowCustomizer.Font = myFont2;

 
 

 
 

ThemeManager.RefreshTheme();

}

 
 

void OnCalculateCustomSummary(object sender, CustomSummaryEventArgs e) {

if (e.FieldName.ToString() == "Shipped")

if (e.IsTotalSummary) {

if (e.SummaryProcess == CustomSummaryProcess.Calculate) {

if (!(bool)e.FieldValue)

count++;

e.TotalValue = count;

}

}

}

 
 

}

 
 

}

自定义模板列、滑动显示按钮

<dxGrid:GridControl
x:Name="grid"
ItemsSource="{Binding JDProduct}"

AllowResizeColumns="True"

AllowHorizontalScrollingVirtualization="True"

ColumnsAutoWidth="False"

SwipeButtonShowing="OnSwipeButtonShowing"


SwipeButtonClick="OnSwipeButtonClick"

>

<dxGrid:GridControl.Columns>

<dxGrid:TemplateColumn
FieldName="Name"
Caption ="112"
Width ="60"
IsReadOnly="true"
AllowGroup="False"
AllowSort="False" >

<dxGrid:TemplateColumn.DisplayTemplate>

<DataTemplate>

<Button
Text="{Binding Value}"

Clicked="nameClient"

BorderWidth="0"

                                    BackgroundColor="Green"

                                    TextColor="White"

></Button>

</DataTemplate>

</dxGrid:TemplateColumn.DisplayTemplate>

</dxGrid:TemplateColumn>

<dxGrid:TextColumn
FieldName="Name"
Caption = "名字"
Width = "100" />

<dxGrid:NumberColumn
FieldName="UnitPrice"
Caption = "价格"
DisplayFormat="C0"/>

<dxGrid:DateColumn
FieldName="Date"
DisplayFormat="d"/>

<dxGrid:SwitchColumn
FieldName="Shipped" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

<dxGrid:TextColumn
FieldName="Name"
Caption = "Product" />

 

</dxGrid:GridControl.Columns>

<dxGrid:GridControl.LeftSwipeButtons>

<dxGrid:SwipeButtonInfo
ButtonName="LeftButton"
Caption="打印"
BackgroundColor="Green"
Width="150"/>

</dxGrid:GridControl.LeftSwipeButtons>

</dxGrid:GridControl>

特殊说明:如果直接使用绑定的文本则使用 Value关键字,绑定对象则可以直接使用Value.XXX

后端.cs代码绑定事件

void OnSwipeButtonShowing(object sender, DevExpress.Mobile.DataGrid.SwipeButtonShowingEventArgs e)

{

if ((!(Boolean)grid.GetCellValue(e.RowHandle, "Shipped"))

&& (e.ButtonInfo.ButtonName == "RightButton"))

{

e.IsVisible = false;

}

}

 

void OnSwipeButtonClick(object sender, DevExpress.Mobile.DataGrid.SwipeButtonEventArgs e)

{

if (e.ButtonInfo.ButtonName == "LeftButton")

{

string orderDate = (string)grid.GetCellValue(e.RowHandle, " Name");

string orderDateDay = orderDate;

DisplayAlert("Alert from " + e.ButtonInfo.ButtonName, "Day: " + orderDateDay, "OK");

}

if (e.ButtonInfo.ButtonName == "RightButton")

{

grid.DeleteRow(e.RowHandle);

}

}

Xamarin devexpress datagrid 样式的更多相关文章

  1. WPF DataGrid 样式设置

    隔行换色,鼠标单击,悬浮样式都有,其具体效果如图 1 所示. 图 1 WPF DataGrid 样式设置效果图 其中: 界面设计代码下所示 ? + 查看代码 1 2 3 4 5 6 7 8 9 10 ...

  2. DevExpress皮肤样式

    [时间] 2016-02-15 11:41:11 天气晴 没有雾霾难得的好天气!!! [工具] (1)Visual Studio 2015 (2)DevExpress15.2.3 [感言] 一直以来都 ...

  3. WPF DataGrid 样式分享

    原文:WPF DataGrid 样式分享 隔行换色,鼠标单击,悬浮样式都有 先看效果: 代码: <DataGrid AutoGenerateColumns="False" N ...

  4. Xamarin devexpress Grid

    Devexpress 提供了datagrid 控件对于xamarin 进行支持.整个世界美好了,已经无法用语言来形容一个 被列表控件折磨的要死的人看到熟悉的图标时候的激动了.还有一点引用官网的原话: ...

  5. Xamarin.Forms DataGrid

    控件出处 https://components.xamarin.com/ https://components.xamarin.com/gettingstarted/ZumeroDataGrid/tr ...

  6. WPF随手小记之二 ——改变DataGrid样式

    大部分时候我们并不需要手动改变DataGrid的样式,因为用默认的其实也看得过去,而且在DataGrid中的数据也远比外观重要. 但总有时候,我们需要做点必要的UI修改来使DataGrid更美观. 一 ...

  7. Xamarin.Forms之样式

    使用XAML样式设置Xamarin.Forms应用的样式Xamarin.Forms应用程序的样式传统上是通过使用Style类将一组属性值分组到一个对象中来完成的,然后可以将其应用于多个视觉元素实例. ...

  8. wpf 收集的不错的datagrid样式

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" x ...

  9. DataGrid样式

    1.自定义列(DataGridTemplateColumn) <DataGridTemplateColumn Width="130"> <DataGridTemp ...

随机推荐

  1. Java并发编程:线程和进程的创建(转)

    Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务.下面先讲述一下Java中的应用程序和进程相关的概念知识, ...

  2. Sublime Text3 配置markdown插件

    sublime是一个亮骚的文本编辑器,而且是跨三大平台,而markdown是一门标记语法,对于记录真是神器,具体语法百度很多,下面教你在sublime上配置markdown. 这两个神器结合起来简直好 ...

  3. SCGHR 系统设计

    1.表,弄清表的意义,表是系统的核心.

  4. save与 merge与 saveOrUpdate的区别

    save()方法很显然是执行保存操作的,如果是对一个新的刚new出来的对象进行保存,自然要使用这个方法了,数据库中没有这个对象. update()如果是对一个已经存在的托管对象进行更新那么肯定是要使用 ...

  5. 单元测试利器JUnit4

    引言 毋庸置疑,程序员要对自己编写的代码负责,您不仅要保证它能通过编译,正常地运行,而且要满足需求和设计预期的效果.单元测试正是验证代码行为是否满足预期的有效手段之一.但不可否认,做测试是件很枯燥无趣 ...

  6. Spring-----1、Spring一个简短的引论

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  7. 使用Intent实现Activity的隐式跳转

    相比于显式Intent,隐式Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并 ...

  8. Android面试,IntentService的原理及使用

    在Android开发中,我们或许会碰到这么一种业务需求,一项任务分成几个子任务,子任务按顺序先后执行,子任务全部执行完后,这项任务才算成功.那么,利用几个子线程顺序执行是可以达到这个目的的,但是每个线 ...

  9. Java基础知识强化80:Math类random()方法的小扩展(控制产生目的数字的概率)

    1. Math.random()方法: Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9 那么如下 ...

  10. int? 类型数据

    在数据库操作中,会遇到在int的单元格恰好为NULL值的情况,这个时候我们可以直接判断是否为null然后进行赋值,有人就想那我刚好用一下:?表达式不就好了: ) ? ); 这时候编译器会报错,原因就是 ...