随笔 - 23, 文章 - 22, 评论 - 144, 阅读 - 25880
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Silverlight中使用MVVM

Posted on   雷雷  阅读(585)  评论(2编辑  收藏  举报

今天在园子看到一篇关于MVVM的文章,顺便实践了下,代码如下:

Model:

 

public class Person
{
public int age { get; set; }
public string name { get; set; }
}

 

 

 

复制代码
代码
using System.ComponentModel;
using System.Collections.ObjectModel;
public class Persons
{
public List<Person> person;
public List<Person> getPerson()
{
person
= new List<Person>()
{
new Person{name="Yuanyuan",age=23},
new Person{name="Yoyo",age=28},
new Person{name="Me",age=30}

};
return person;
}
}
复制代码

ViewModel:

 

复制代码
代码
using sl20100820.Model;
using System.Collections.Generic;
using System.ComponentModel;
using System.Collections.ObjectModel;
public class PageViewModel:INotifyPropertyChanged
{
public List<Person> Human { get; set; }
public PageViewModel()
{
Human
= new Persons().getPerson();
}
private Person _getOnePerson;
public Person GetOnePerson
{
get { return _getOnePerson;}
set {_getOnePerson=value;
if(PropertyChanged !=null)
{
PropertyChanged(
this,new PropertyChangedEventArgs("GetOnePerson"));

}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
复制代码

 

 

View:

 

复制代码
代码
<UserControl x:Class="sl20100820.View.PageView"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
d:DesignHeight
="300" d:DesignWidth="400" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data">

<Grid x:Name="LayoutRoot" Background="White">
<data:DataGrid AutoGenerateColumns="True" ItemsSource="{Binding Human}" SelectedItem="{Binding GetOnePerson,Mode=TwoWay}"
Height
="200" HorizontalAlignment="Left" Margin="41,65,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" />
<TextBox Text="{Binding GetOnePerson.age,Mode=OneWay}" Height="23" HorizontalAlignment="Left" Margin="247,149,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" />
<TextBox Text="{Binding GetOnePerson.name,Mode=OneWay}" Height="23" HorizontalAlignment="Left" Margin="247,191,0,0" Name="textBox2" VerticalAlignment="Top" Width="120" />

</Grid>
</UserControl>
复制代码

 

MainPage

 

复制代码
代码
<UserControl x:Class="sl20100820.MainPage"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d
="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc
="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable
="d"
xmlns:model
="clr-namespace:sl20100820.ViewModel" xmlns:view="clr-namespace:sl20100820.View"
d:DesignHeight
="300" d:DesignWidth="400">

<UserControl.Resources>
<model:PageViewModel x:Key="page"/>
</UserControl.Resources>
<Grid Name="gridView1" Background="White" DataContext="{StaticResource page}">
<view:PageView></view:PageView>
</Grid>
</UserControl>
复制代码

 

 

View in browser:

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示