实体对象定义Model2  和Model均可 实现响应效果

 public class BaseModel : INotifyPropertyChanged
{
private bool _selected;
public bool Selected
{
get { return _selected; } set
{
if (Selected != value)
{
_selected = value;
OnPropertyChanged();
OnPropertyChanged("StatusFormat");
}
}
} public string StatusFormat
{
get
{
return Selected ? "选中了" : "没选中";
}
} public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
} public event PropertyChangedEventHandler PropertyChanged;
} public class BaseModel2 : BindableObject
{
public static readonly BindableProperty SelectedProperty =
BindableProperty.Create("Selected",
typeof(bool),
typeof(bool),
false );
public bool Selected
{
get
{
return (bool)this.GetValue(SelectedProperty);
}
set
{
if (Selected != value)
{
this.SetValue(SelectedProperty, value);
//通知下另外的依赖属性跟着变
OnPropertyChanged("StatusFormat");
}
}
} public string StatusFormat
{
get
{
return Selected ? "选中了" : "没选中";
}
}
}
public partial class MainPage : ContentPage
{
/// <summary>
/// 我实现了2个mvvm方式 BaseModel 和 BaseModel2 都可以实现响应
/// </summary>
private ObservableCollection<BaseModel2> Models;
public int Tick { get; set; }
public MainPage()
{
InitializeComponent();
Models = new ObservableCollection<BaseModel2>();
lst.ItemsSource = Models;
this.BindingContext = this;
} private void Button_Clicked(object sender, EventArgs e)
{
Tick++;
this.OnPropertyChanged("Tick");
if (Models.Count==)
{
Models.Add(new BaseModel2 { Selected = false });
Models.Add(new BaseModel2 { Selected = true });
Models.Add(new BaseModel2 { Selected = true });
Models.Add(new BaseModel2 { Selected = false });
} Models[new Random().Next(Models.Count)].Selected = !Models[new Random().Next(Models.Count)].Selected; }
}
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:App5Mvvm"
x:Class="App5Mvvm.MainPage"> <StackLayout>
<!-- Place new controls here -->
<Label Text="Xamarin MVVM哪些事"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
<Label Text="{Binding Tick, StringFormat='{0}次点击'}}"></Label>
<Button Clicked="Button_Clicked" Text="点我点我"></Button>
<ListView x:Name="lst">
<ListView.ItemTemplate>
<DataTemplate >
<ViewCell>
<StackLayout Orientation="Horizontal">
<BoxView WidthRequest="" Color="Red" IsVisible="{Binding Selected}"></BoxView>
<Label Text="{Binding StatusFormat}"></Label>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout> </ContentPage>

Xamarin Forms MVVM实现效果说明的更多相关文章

  1. Xamarin Forms 进度条控件

    本文翻译:http://xamlnative.com/2016/04/14/xamarin-forms-a-simple-circular-progress-control/ 里面都是胡说的,如果看不 ...

  2. Xamarin.Forms 自定义控件(呈现器和效果)

    Xamarin.Forms 使用目标平台的本机控件呈现用户界面,从而让 Xamarin.Forms 应用程序为每个平台保留了相应的界面外观.凭借效果,无需进行自定义呈现器实现,即可自定义每个平台上的本 ...

  3. 从零开始学Xamarin.Forms(一) 概述

    原文:从零开始学Xamarin.Forms(一) 概述     Xamarin 读 "ˈzæmərin",是一个基于开源项目mono的能够使用C#开发的收费的跨平台(iOS.And ...

  4. Xamarin.Forms 开发资源集合(复制)

    复制:https://www.cnblogs.com/mschen/p/10199997.html 收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 S ...

  5. Xamarin.Forms 开发资源集合

    收集整理了下 Xamarin.Forms 的学习参考资料,分享给大家,稍后会不断补充: UI样式 Snppts: Xamarin Forms UI Snippets. Prebuilt Templat ...

  6. 使用MvvmCross框架实现Xamarin.Forms的汉堡菜单布局

    注:本文是英文写的,偷懒自动翻译过来了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 欢迎大家关注我的公众号: ...

  7. 从零開始学Xamarin.Forms(一) 概述

        Xamarin 读 "ˈzæmərin",是一个基于开源项目mono的可以使用C#开发的收费的跨平台(iOS.Android.Windows Phone.Mac)解决方式. ...

  8. Xamarin.Forms之XAML

    官网参考 XAML基础知识 XAML(eXtensible Application Markup Language)可扩展应用程序标记语言,允许开发者在Xamarin.Forms应用中采用标记而不是代 ...

  9. Xamarin.Forms 入门

    介绍 Xamarin.Forms是一个开源UI框架,Xamarin.Forms允许开发人员从单个共享代码库构建Android,iOS和Windows应用程序. Xamarin.Forms允许开发人员使 ...

随机推荐

  1. C中的volatile用法[转载]

    volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进 ...

  2. fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410

    原因: 前端传递的数组过于复杂,倒是出现这种问题,前端采用vue axios,发送请求,后端java接收代码,实现前后端分离 后端就收fastjson接收json,进行业务处理,后端Controlle ...

  3. BZOJ 1029 [JSOI2007]建筑抢修 (贪心 + 优先队列)

    1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 5452  Solved: 2422[Submit][Statu ...

  4. AngularJS监听数组变化

    我们在使用angualr的监听时候,业务的需要我们会去监听一个数组的某一个值得变化,再写逻辑代码.然而我们在使用$scope.$watch("",function(){ })时候会 ...

  5. 1.8.2suspend与resume方法的缺点-独占

    这两个方法使用不当,容易造成公共的同步对象的独占,使得其他线程无法访问公共的同步对象 测试 package com.cky.bean; /** * Created by edison on 2017/ ...

  6. Windows 8创新之路——样章分享

    在电脑里面躺了大约也有半年多的光景了. 在Windows 8.1还有不到一个月的时间里,将这些内容分享出来,也算是对得起自己那段时间的熬夜. 希望大家多提宝贵意见. 谢! 点击标题可浏览SkyDriv ...

  7. myeclipse6.6+maven跑springside4.1的demo

    1.安装myeclipse6.6 2.myeclipse6.6安装maven 2.1 删除原有maven. 关闭Eclipse程序, 进入MyEclipse插件目录/eclipse/features ...

  8. iOS开发 关于iBeacon的一些记录

    最近时间一直在研究ibeacon所以把自己遇到的一些问题写下来做个笔记. 参考资料:https://github.com/nixzhu/dev-blog/blob/master/2014-04-23- ...

  9. [ASE][Daily Scrum]11.06

    我们的<坦克大战·无尽>正式开始动工了,今天的任务计划如下~ [Plan] View Shilin Liu 搭建好开发环境 收集素材         Control Jiafan Zhu ...

  10. PSP个人项目耗时对比记录表:四则运算

    Personal Software Process Stages Time(%) 计划 5    •估计这个任务需要多长时间 5 开发 60    •需求分析  5    •生成设计文档  5     ...