wpf silverlight mvvm mvc 种种

最近在研究wp7的开发,其实一直不明白为什么wp7的开发模板要叫silverlight,我一开始还以为应该和winform很相似

干了多年的web开始,渐渐忽视了对winform领域的关注,才发现winform已经发展到wpf到silverlight了.

 

现在我在vs2010已经看到什么wpf的模板了,只有silverlight的.

其实最另我关注并不是这种新的应用程序UI界面,而是发明了一种叫mvvm的架构.

 

多少年来,我们一直在说美工与程序的分开,在web开发方面,因为ajax的出现,不管用不用微软MVC的模板,都可以实现美工与程序分开,因为我们所有的逻辑都可以在一下纯粹的HTML上面完成.

但是winform上面还是要用click事件,直到出现了wpf.它用控件的一个属性command,来代替onclick事件,所以美工人员可以专门做界面,程序员专门做程序,界面与程序之间靠一个viewmodel类来实现关联

下面代码说话

<UserControl x:Class="SilverlightApplication2.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"
    d:DesignHeight="300" d:DesignWidth="400"
    xmlns:local="clr-namespace:SilverlightApplication2"         
             >
    <UserControl.DataContext>
        <!--声明创建一个BtnViewModel的实例-->
        <local:BtnViewModel/>
    </UserControl.DataContext>

    <Grid x:Name="LayoutRoot" Background="White">
       
        <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="109,118,0,0" Name="button1" VerticalAlignment="Top" Width="75" Command="{Binding BtnCommand}"/>
    </Grid>
</UserControl>


这里高亮显示的部分是新加的,特别是很多网上的用例都没有强调 xmlns:local="clr-namespace:SilverlightApplication2"    这个KEY的添加,所以我在刚开始写的时候经常会报

local是未定义节点的错误

<UserControl.DataContext>        <!--声明创建一个BtnViewModel的实例-->        <local:BtnViewModel/>    </UserControl.DataContext>

表示实例化一个叫btnviewmodel的类

coomand="{binding brncommand}"表示绑定一个叫brncommand的类

BtnCommand类是这样写的

 public class BtnCommand:ICommand
    {

        public bool CanExecute(object parameter)
        {
            return true;
        }
        
        public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            if (parameter != null)
            { MessageBox.Show(parameter.ToString()); }
            else
            {
                MessageBox.Show("未设置CommandParameter");
            }   

        }
    }

我们还要建一个viewmodel的类

public class BtnViewModel
    {
        public ICommand BtnCommand { get; set; }
        public BtnViewModel()
        {
            BtnCommand = new BtnCommand();
        }   
    }

这样一来,我们就实现了click事件了,美工可以单纯的做他的页面,程序可以写他的类库,完全不用去碰界面的CS代码.

public class BtnViewModel
    {
        public ICommand BtnCommand { get; set; }
        public BtnViewModel()
        {
            BtnCommand = new BtnCommand();
        }   
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值