随笔 - 37  文章 - 0 评论 - 18 trackbacks - 0

1.RiaService

暂时无法显示数据模型传递,只能使用原始的IEnumerable、Dictionary等数据集合类型来代替传递。

http://forums.silverlight.net/forums/p/96425/302186.aspx

 

2.HyperlinkButton

生成链接按钮后,当点击页面控件后,链接按钮会出现蓝色边框,这时我们只需要将链接按钮设置为:IsTabStop="False"
就ok了

http://forums.silverlight.net/forums/t/40896.aspx

 

3.DataPager、StoreBoard

用DataPager来实现具有动画效果的control collection的翻页,会让StoreBoard失效

 

4.Model

在调用Model的视图过程中,下面的条件会出现死循环:

a. 为datagrid绑定某一视图

b.为datagrid的数据源添加selecedchanged事件。 

c.通过直接操作表来实现对于视图的更新操作,这里我是弹出一个子窗口对视图进行更新。

 

posted @ 2010-05-11 01:34 yo 阅读(105) 评论(0) 编辑

Grid:类似于表格布局
Canvas:可以在任意位置显示控件
Stackpanel:以水平或垂直显示控件
WrapPanel:以水平或垂直显示控件,当控件填充完整行或整列时,可自动换行或换列
DockPanel:水平显示控件,使最后一个控件靠边显示

Navigator:导航控件
Frame:框架,与Navigator结合设计系统框架
Border:为控件内容加边框
Rectangle:可做一般的填充区域
ContentControl:内容包含控件
ViewBox:内容包含控件,可设置里面内容的显示效果
Storeboard:故事板,实现动画效果

DataForm:显示数据模型集合,可绑定多个数据模型
DataPager:分页控件,可跟任意容器绑定实现分页效果

posted @ 2010-04-27 11:21 yo 阅读(51) 评论(0) 编辑

最近在跟着 WXWinter 学Workflow,收益非浅。 

根据 WXWinter 所提供的关于 会签业务流程 例子,自己也尝试了做一个流程控制,结果在 Persistence 时,出现了一个异常:

{"The execution of the InstancePersistenceCommand named {urn:schemas-microsoft-com:System.Activities.Persistence/command}CreateWorkflowOwner was interrupted by an error."}

找了半天,最后发现原来是数据库里缺少了System.Activities.DurableInstancing支持。

 

 

但这些是什么时候产生的呢?应该会有什么工具可以辅助我们执行相关操作吧。最后在一个老外那找到了一种方式:

http://coding.roecher.de/2010/02/08/could-not-find-stored-procedure-system-activities-durableinstancing-createlockowner/

如果有其他更好的方式,希望能分享一下

打开命令行,例如输入:

osql -E -S ServerName -d DBName -i C:\Windows\Microsoft.NET\Framework\v4.0.30128\SQL\en\SqlWorkflowInstanceStoreSchema.sql
osql -E -S ServerName -d DBName -i C:\Windows\Microsoft.NET\Framework\v4.0.30128\SQL\en\SqlWorkflowInstanceStoreLogic.sql

完成后,我们再到数据库里查看,就可以看到System.Activities.DurableInstancing的东西了。

 

当解决这个问题后,运行时,又出现了另一个异常,错误信息如下:

"The execution of an InstancePersistenceCommand was interrupted because the instance '340e56da-3d32-4ca6-9729-2fb5ed19a0cb' is locked by a different instance owner. This error usually occurs because a different host has the instance loaded. The instance owner ID of the owner or host with a lock on the instance is '954d7075-4937-49fe-9213-b2009c6dbcc1'."

还好, WXWinter 已经给出了 答案 ,我们需要将PersistableIdleAction设为PersistableIdleAction.Unload;

posted @ 2010-03-31 17:01 yo 阅读(174) 评论(1) 编辑

前面分别实现了ViewModel与Riaservice,接下来让我们看看如果实现与View的绑定,如下:

ProductionView.xaml的代码如下:

<UserControl x:Class="Mvvm.Client.Views.ProductionView"
    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"
           xmlns:vm="clr-namespace:Mvvm.Client.ViewModels.ViewModels;assembly=Mvvm.Client.ViewModels"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data">
    <!--添加ProductionViewModel引用-->
    <UserControl.Resources>
        <vm:ProductionViewModel x:Name="productionViewModel"/>
    </UserControl.Resources>
    <!--通过DataContext与Grid绑定-->
    <Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource productionViewModel}}" MinHeight="100">
        <!--添加GdataGrid与DataPager控件-->
        <data:DataGrid AutoGenerateColumns="True" Name="dataGrid1" MinHeight="20" MinWidth="100" Grid.Row="4" />
        <data:DataPager Grid.Row="5" Name="dataPager1" />
    </Grid>
</UserControl>

在这里,控件与数据源的绑定放在了其*.cs文件中,这样更方便于我们进行相关操作,代码如下:

 

 public partial class ProductionView : UserControl
    {
        public ProductionView()
        {
            InitializeComponent();
            BindingGrid();
        }

        void BindingGrid()
        {
            this.productionViewModel = new ViewModels.ViewModels.ProductionViewModel();
            base.DataContext = this.productionViewModel;
            this.productionViewModel.QueryCommand.Execute(null);

            // Wrap the itemList in a PagedCollectionView for paging functionality
            PagedCollectionView itemListView = new PagedCollectionView(this.productionViewModel.ListProduction);
            if (itemListView != null)
            {
                dataGrid1.ItemsSource = itemListView;
                dataPager1.Source = itemListView;
                dataPager1.PageSize = 20;
                dataPager1.DataContext = this.dataPager1;
            }
        }
    }

这样,我们就能够将View与ViewModel关联起来。

以MVVM这么模式来设计开发Silverlight,真正意义上达到了我们要实现页面与逻辑分离的目的。上面例子中,我们的View也可以用WPF来实现。

 

posted @ 2010-03-17 01:16 yo 阅读(231) 评论(0) 编辑
摘要: 上一篇介绍了ViewModel,下面介绍一下结构中RiaService。 在.net 4.0中,为我们提供了一个新的Ria服务:Domain Service,主要用于处理SilverLight与服务端的通信问题。以往我们在处理这方面的问题时,首先想到的是用WCF、Web Service等方式来实现,所以在处理过程中还需要去考虑通信方面的问题。但有了Domain Service后,我们不用再去关心这方面的问题,它会自动帮我们生成相应的通信协议与代码,将我们所提供的服务曝露给Silverlight客户端。 阅读全文
posted @ 2010-03-15 01:15 yo 阅读(597) 评论(0) 编辑
摘要: 上一篇介绍了MVVM架构的总体架构,下面介绍一下里面ViewModel与RiaService的实现过程 1.ViewModel,定义与View相对应的属性与操作,如下: ViewModelBase.cs,这里继承自INotifyPropertyChanged,这样,当与之所绑定的View发生变化时,就能触发ViewModel相对应的属性或方法。代码如下 阅读全文
posted @ 2010-03-15 00:37 yo 阅读(441) 评论(0) 编辑
摘要: SilverLight技术的出现也已经有很长一段时间了,但是却感觉还没有比较统一的框架模式(个人的技术水平有限)。 在研究它的架构模式过程中,刚开始是试想采用MVC模式来搭建系统架构,利用SilverLight与WebForm相结合的形式,但是框架做好了之后感觉不太好使,WebForm与SilverLight间的页面展现总是感觉不能跟其相应的页面逻辑代码实现分离;相反,Controller对于View的控制还增加了相应的工作量,所以放弃采用MVC模式。 后来尝试采用MVP模式,虽然能够实现页面的逻辑分离,但是Presenter却感觉显的比较臃肿,需要处理的关系较多,压力较大,所以只能继续寻找合适的框架模式。 阅读全文
posted @ 2010-03-13 00:17 yo 阅读(1541) 评论(6) 编辑
摘要: 在世界上,到处都有教人们如何调情的课程。某个德国的大学甚至要求他们的IT工程师参加调情的课程——并不是要吸引伙伴,而是要学习如何在工作中更有效地交流。乍听起来似乎有些“轻浮”,但这里的调情意味着与他人建立联系,而联系是良好沟通的关键所在。那也正是敏捷宣言第一个原则:人和交流重于过程和工具。 阅读全文
posted @ 2010-03-04 15:33 yo 阅读(45) 评论(0) 编辑
摘要: 关于AG_E_PARSER_BAD_PROPERTY_VALUE错误,估计做Silverlight都遇到过这个错误,一般都是出现在xaml文件中,有以下几种情况:1.xaml文件中有某些属性不合法,不受xaml 分析器支持2.在xaml文件中有某些方法定义没有被实现总之,如果出现这种错误,目前来说只能自己慢慢找了,一般xaml格式错误的比较多阅读全文
posted @ 2009-12-30 13:06 yo 阅读(396) 评论(0) 编辑
摘要: 在.Net3.5SP1中,新增加了一个DLL:System.Web.Routing,只要我们在项目中添加该引用,那么就可以实现如MVC项目中的路由选择。 阅读全文
posted @ 2009-12-24 16:03 yo 阅读(36) 评论(0) 编辑
仅列出标题  下一页