This is 张善友's Tencent Weibo homepage. Follow now!

张善友 收听

一介码农,躬耕于鹏城。博客:http://shanyou.c...

Xamarin.Form 实例: Discuz BB

2016-01-26

至于为什么选 Discuz 的 BBS , 因为我常上的几个网站, 都有一堆的 APP , 官方的, 第三方的 . BBS 虽然已经没落了, 但是官方的 APP 居然用不了!

写这个东西之前, 本来想拿来看 1024 的, 但是 1024 要么不是最新版本, 要么禁用了 API, 我就只能哈哈哈, 拿"以前" 最常上的 BBS 的 API 开始了. 

源码:

https://github.com/gruan01/Discuz.Mobi 

上几张图:

Andorid 

 

WP

 

IOS : 没有, 只顾睡觉看电影了, 没有搞. 

API

Discuz! X3.x 及已上版本内置 API , 低版本中, 用插件的形式提供.

这里是几个主要的 API :

版块列表 : http://xxx/api/mobile/index.php?mobile=no&version=1&module=forumindex

版块的主题列表 : http://xxx/api/mobile/index.php?mobile=no&version=1&module=forumdisplay&fid=11  其中的 fid 是上个 API 中返回值中的 fid , 即版块ID, 还可以有 page, tpp (pageSize)

主题详细: http://xxx/api/mobile/index.php?mobile=no&version=1&module=viewthread&tid=3287083 tid 即主题ID, 还可以有 page, ppp (pageSize) , 这名字取的好蛋疼啊.

登陆:  POST /api/mobile/index.php?mobile=no&version=1&module=login&loginsubmit=yes&loginfield=auto&submodule=checkpost

password=密码&username=用户名&formhash=&answer=安全问题答案&questionid=5

 

这个登陆一直没有成功过!不知道是啥原因..所以和登陆相关的东西都没办法做下去...

 

项目结构

基于

1, Xamarin.Form (以下简称 XF)

2, Caliburn.Micro (以下简称 CM) 

Discuz 是主项目, 那个 Droid, WinPhone 是用于编译生成app 的.

ViewModels / Views 是 CM 的默认约定方式, 字面意思大家都理解. 

Discuz.Api 的入口是 ApiClient, 关键是 Methods 目录下面的对 api 方法的封装.

具体用法可以参考 Test 项目. 

 

讲解:

App.xaml

写过 WPF 的, 都知道该文件的重要性.

但是在 XF 中, 新建项目中,没有该文件, 需要手动添加一个, 然后在 app.cs 的构造函数中添加:

1 public App(SimpleContainer container) { 
2 this.InitializeComponent();

 

InitializeComponent 会在你添加 App.xaml 之后, 自动生成, 在它里面会去加载 app.xaml  

 

Caliburn.Micro

之前发过一篇, 不在赘述:

Xamarin 的 MVVM 之 Caliburn.Micro

TabbedPage 数据源绑定

之前写的项目没用 MVVM, 直接这样写:


 1     public partial class BusPage : TabbedPage { 
2
3 public BusPage() {
4 //InitializeComponent();
5
//this.ItemsSource = this.Pages;
6

7
this.Title = "LBC 业务通";
8

9 this.BackgroundColor = Color.White;//在XAML中设置 Background 不起作用
10
11 this.Children.Add(new OrderListPage());
12 this.Children.Add(new CustomerListPage());
13 this.Children.Add(new TemplatesListPage());
14 this.Children.Add(new SettingPage());
15        }        
16 }


										
            	
正在加载...

扫描二维码关注Xamarin官方微信账号