Silverlight中多个Xaml之间的切换调用弹出传参数问题小结

合集下载

Silverlight探秘系列课程 Silverlight调试、错误处理和异常

Silverlight探秘系列课程 Silverlight调试、错误处理和异常

Silverlight 系列课程39讲 Silverlight 调试、错误处理和 调试 错误处理和 异常苏鹏 MVP MSDN 特约讲师下载Webcast好帮手iR iReaper文件大小<=2.5Mb 可按照多种分类方式进行批量下载WMV、MP3、MP4、Zune四种格式Webcast访问iReaper主页: /iReaper h d l i加速企业解决方案部署尽在资源和利益• 用于解决方案开发的集中资源 用于解决方案开发的集中资源:资源包括指向测试工具、开发 资源包括指向测试工具 开发 人员 SDK、技术论坛、联机培训等的链接,微软全球技术支持中 心( (GTSC) )的邮件技术支持。

• 对市场调查的访问权限:您可以使用这些宝贵信息来识别您当 前的客户或未来客户的特定需求。

• 认证徽标计划:该徽标可以向客户证明您所具有的优秀技术。

• 市场营销和销售支持 h OMetro – ISV领航计划最先应用微软最新技术 提升ISV 提升 ISV竞争优势和商业价值 竞争优势和商业价值• Metro 提供了结构化的支持来帮助ISV进行新技术的评估和 部署 部署: Discover  – 参与前沿技术培训 – 评估最新的微软技术及产品 Release Learn – 获取微软Beta版产品的技术支持 – 联络全球开发人员和架构师社区 – 与世界级的商务和技术社区分享最先 Develop 部署的经验点击添加MSN机器人小新 为您收听下载MSDN中文网络广播课程加油助力!收听本次课程需具备的条件• 了解 解SilverLight应用基础 应 础 • 了解.NET  NET 的错误处理基本原理Level 200内容介绍• • • • 调试概括 试 括 错误处理 处理和引发异常 总结Level 300调试概述• 讨论 Silverlight Tools for Visual Studio 2008 可帮 调试 Silverlight g 的应 的应用程 程 ,它可帮助您调试基于 序。

管窥MVVMLightCommand参数绑定和事件传递

管窥MVVMLightCommand参数绑定和事件传递

管窥MVVMLightCommand参数绑定和事件传递前⾔由于在实际项⽬中,业务功能的增加导致软件开发规模在逐渐变⼤,所以我准备找个Silverlight框架来组织当前项⽬中的⽂件,以期能够让后续的业务功能增添和维护更加容易⼀些。

⽆意中,我在这篇⽂章中看到了当前Silverlight下所有的框架的评测:,当我看到MvvmLight toolkit在各⽅⾯都⽐较完备的时候,于是决定选择这个框架:在上,下载了MVVM Light Toolkit V4 RTM这个版本,因为我⽤的是vs2010,所以我下载了⽀持当前机器IDE的版本。

新建项⽬,选择MvvmLight(SL4),之后我们就可以看到项⽬结构了:其中:Design⽂件夹中的⽂件主要提供设计时运⾏⽀持Model⽂件夹则放置了富实体模型Skins⽂件夹则放置了样式⽂件定义ViewModel⽂件夹则放置了ViewModel对象,其实MainViewModel和MainPage是⼀对⼀的(ViewMoel-View)关系.⼆者的映射通过ViewModelLocator进⾏。

MainPage.xaml就是我们的视图页⾯下⾯我们就以例⼦来演⽰MvvmLight Toolkit中是如何实现MVVM模式,如何绑定命令,如何进⾏事件消息传递的。

⾸先,在这个框架中,MVVM模式的⼊⼝点为ViewModelLocator类,在这个类中,可以定义多个ViewModel属性,并且每个属性都可以通过ServiceLocator.Current.GetInstance⽅法进⾏映射,以便于暴露给前台绑定。

同时,在新增⼀个ViewModel类的时候,⼀定要在其提供的SimpleIoc对象容器中进⾏注册,以便于能够通过IOC的⽅式获取其实例。

做完映射后,就是我们的ViewModel对象了。

它需要继承⾃ViewModelBase类,这个类封装了ICommand,INotifypropertyChanged等接⼝,使⽤起来很⽅便。

Silverlight总是安装提示的解决办法

Silverlight总是安装提示的解决办法

Silverlight总是安装提示的解决办法
随着Silverlight应用越来越多,网页中使用silverlight也经常能够看到。

有些朋友可能在浏览别的Silverlight应用的时候总是会弹出Silver light的安装提示,可是自己已经安装了Silverlight插件,为什么还是会弹出这样的安装提示呢?最近我就碰到了这样的问题,我安装了Sil verlight1.1 refresh,已经是当前的最新版本了,可是还是在浏览其他silverlight的时候提示我安装Silverlight。

Silverlight变得很奇怪。

所以我决定仔细找下问题的原因在哪?经过查看发现,原来是安装的Silverlight不同版本之间Silverlight.js 的判断兼容问题。

Silverlight从最早的Silverlight1.0 beta1,Silverlight1.0 bet a2,rc1,rc2,RTM,到同时推出的Silverlight1.1 Alpha refresh,有若干多个版本,而其中的Silverlight.js各有不同
而实际的silverlight应用可能判断的版本又是不一样的
这就是导致问题的原因。

知道了问题的原因以后,解决也就变得简单起来。

只需要替换成相符合的版本的Silverlight.js就可以解决这样的问题,安装提示也就消失了。

kotlin 跳转时传递参数及结果回传的方法

kotlin 跳转时传递参数及结果回传的方法

kotlin 跳转时传递参数及结果回传的方法在 Kotlin 中,你可以使用多种方法在跳转时传递参数,并在结果回传时获取这些参数。

以下是一些常见的方法:1. 使用 Intent 传递数据:如果你正在从 Activity 跳转到另一个 Activity,你可以使用 Intent 来传递数据。

例如:```kotlinval intent = Intent(this, TargetActivity::)("key", value)startActivity(intent)```在目标 Activity 中,你可以这样获取数据:```kotlinval data = ("key")```2. 使用 ViewModel 和 LiveData:如果你的数据是在多个 Activity 或 Fragment 之间共享的,或者你需要更复杂的逻辑来处理数据传递,你可能需要使用 ViewModel 和 LiveData。

3. 使用 EventBus 或 RxJava:如果你需要异步处理数据,或者需要在多个组件之间传递事件,你可以考虑使用 EventBus 或 RxJava。

4. 使用 Dagger, Koin 等依赖注入框架:这些框架允许你更灵活地在组件之间共享数据。

5. 使用 Data Binding 或 Kotlin 的扩展函数:对于简单的数据绑定,你可以使用 Android 的 Data Binding 或者 Kotlin的扩展函数来简化视图更新。

6. 使用 ResultReceiver:如果你需要从子 Activity 返回结果到父 Activity,可以使用 ResultReceiver。

7. 使用 SharedPreferences 或 Room:对于长期存储或需要跨应用共享的数据,可以考虑使用 SharedPreferences 或 Room。

8. Kotlin Coroutines:对于异步操作,可以使用 Kotlin 的协程库来处理结果。

wpf 窗体间互相传值的方式 -回复

wpf 窗体间互相传值的方式 -回复

wpf 窗体间互相传值的方式-回复WPF (Windows Presentation Foundation) 是一种用于创建高级用户界面的开发框架。

在WPF 中,窗体之间的数据传递是一个常见的需求。

本文将介绍几种在WPF 中实现窗体间互相传值的方式,包括绑定、事件、委托和传统的参数传递。

首先,我们来探讨使用数据绑定在WPF 窗体间进行数据传递的方式。

在WPF 中,可以通过属性绑定将一个窗体的属性与另一个窗体的属性相关联。

这种方式非常简洁且高效。

首先,在发送数据的窗体中,我们需要将需要传递的属性设置为公共属性,并且使用INotifyPropertyChanged 接口来通知该属性的更改。

然后,在接收数据的窗体中,我们可以通过创建一个Binding 对象,并将相关属性与发送数据的窗体绑定,从而实现数据的传递。

其次,我们可以使用事件来实现窗体间的数据传递。

事件是一种在应用程序中引发和响应的动作。

在WPF 中,我们可以自定义事件,并在需要传递数据的窗体中引发该事件,在接收数据的窗体中注册对应的事件处理程序来接收数据。

通过这种方式,窗体之间可以实现松耦合的数据传递。

接下来,我们来介绍委托的使用。

委托是一种用于引用方法的类型。

在C# 中,我们可以使用委托来实现窗体间的数据传递。

首先,在发送数据的窗体中,我们需要定义一个委托,并且创建一个对应的事件。

然后,在接收数据的窗体中,我们可以为该委托注册一个方法作为事件处理程序,用于接收数据。

通过这种方式,窗体之间可以直接传递数据,实现及时的通信。

最后,我们可以使用传统的参数传递方式在窗体间传递数据。

在这种方式中,我们可以通过在启动新窗体时传递参数的方式实现数据的传递。

在发送数据的窗体中,我们需要在打开新窗体的代码中传递需要传递的数据。

然后,在接收数据的窗体中,我们可以通过构造函数或属性的方式接收该参数,并进行后续的处理。

这种方式虽然相对简单,但不够灵活,并且在传递大量数据时会导致代码冗长。

窗体间的参数传递

窗体间的参数传递

窗体间的参数传递窗体间的参数传递是指在不同窗体之间传递数据或信息,让窗体之间实现交互和数据共享。

在实际的软件开发过程中,窗体间的参数传递是非常重要的,它可以帮助实现窗体之间的数据传输和共享,让用户能够方便地在不同窗体中操作和查看相关信息。

下面将探讨窗体间参数传递的几种常见方式。

1.构造函数传参:构造函数是用于创建和初始化对象的方法。

通过在窗体类的构造函数中添加参数,可以在创建窗体对象时传递参数值。

这样,通过在构造函数中接收参数,并将其赋值给窗体类的成员变量,就可以在不同窗体之间实现参数的传递。

2.公共属性传值:在窗体类中定义公共属性,并将参数存储在这些属性中。

在调用窗体时,可以通过访问和修改这些公共属性的值,实现窗体间的参数传递。

这种方式比较灵活,可以在任意时刻传递和修改参数值。

3.静态变量传参:静态变量是一种在整个程序运行过程中都存在的变量,它在不同窗体之间共享数据。

可以在一个窗体中定义一个静态变量,然后在其他窗体中通过访问该静态变量来实现参数的传递。

这种方式适用于多窗体之间频繁传递和共享数据的场景。

4.单例模式传参:单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供全局访问点。

可以在窗体类中应用单例模式,通过获取窗体的实例来传递参数。

通过设置窗体类的公共属性或使用对象的方法,可以在不同窗体之间传递参数。

5.委托和事件传参:委托和事件是C#中常用的机制,用于实现对象间的松耦合和消息传递。

可以在窗体类中定义委托和事件,并在其他窗体中注册和触发事件来实现参数的传递。

通过定义不同的事件参数类型,可以传递不同的参数数据。

总结一下,窗体间的参数传递是实现窗体交互和数据共享的重要手段。

在C#中,可以应用多种方式实现窗体间的参数传递,包括构造函数传参、公共属性传值、静态变量传参、单例模式传参以及委托和事件传参等。

根据实际需求和开发场景选择合适的方式,可以实现窗体间数据传输的需要。

Silverlight父窗口弹出子窗口及窗口之间数据交互

Silverlight父窗口弹出子窗口及窗口之间数据交互

Silverlight父窗口弹出子窗口及窗口之间数据交互1.首先创建子窗口页面TypeChildWindow.xaml2.在子窗口构造需要展示的数据3.子窗口定义委托函数。

public event EventHandler OkClicked;private void OKButton_Click(object sender, RoutedEventArgs e){if (OkClicked != null){string[]strs=((TreeViewItem)TypeTree.SelectedValue).Tag.ToStri ng().Split(',');string parentName = string.Empty;if (!string.IsNullOrEmpty(strs[1]))parentName = strs[1] + "-";CategoryId =((TreeViewItem)TypeTree.SelectedValue).DisplayMember Path;CategoryName = parentName + ((TreeViewItem)TypeTree.SelectedValue).Header.ToString();string remark = strs[0];if (remark == "1"){OkClicked(this, new EventArgs());}else{MessageBox.Show("请选择该节点的下级节点!");return;}}this.DialogResult = true;}private void CancelButton_Click(object sender, RoutedEventArgs e){this.DialogResult = false;}4.父窗口声明委托对象及调用private TypeChildWindow typeChildWindow = null;//获取标题列表项typeChildWindow = new TypeChildWindow(); typeChildWindow.OkClicked += newEventHandler(typeChildWindow_OkClicked);//回调返回的数据处理void typeChildWindow_OkClicked(object sender, EventArgs e){ContrastType.Text=typeChildWindow.CategoryName;ContrastTypeId.Text = typeChildWindow.CategoryId;}父页面触发调用子窗口事件/// &lt;summary&gt;/// 分类项弹出窗口/// &lt;/summary&gt;/// &lt;param name="sender"&gt;&lt;/param&gt;/// &lt;param name="e"&gt;&lt;/param&gt;private void ContrastType_Click(object sender, RoutedEventArgs e){typeChildWindow.Show(); }。

silverlight实现不同类型窗体间随意传值 - 副本

silverlight实现不同类型窗体间随意传值 - 副本

了解众所周网页间传递值大都用Session内部对象来应用的(比较安全方面考虑),但silverlight窗体作为承载于应用的程序似乎无法用与Session类似的方法了,怎么办呢?今天测试了两个小程序供参考。

示例1(从子窗体传值给父窗体)1.新建一个silverlight项目用web程序承载它;2.然后新建一个子窗体控件ChildWindow命名为ChildWindowDemo.xaml;3.在ChildWindowDemo.xaml中添加一个TextBox控件,命名为tbchildinfo(如图)ChildWindowDemo.xaml文件如下:<basics:ChildWindowxmlns="/winfx/2006/xaml/presentati on"xmlns:x="/winfx/2006/xaml"xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"x:Class="PassInfo.ChildWindowDemo"Title="ChildWindowDemo"Width="400" Height="300"><Grid x:Name="LayoutRoot" Background="White"><Grid.RowDefinitions><RowDefinition /><RowDefinition Height="Auto"/></Grid.RowDefinitions><Button x:Name="OKButton" Content="OK" Click="OK Button_Click" Width="75" Height="23" HorizontalAlignment="Right" Grid.Row="1 "/><Button x:Name="CancelButton" Content="Cancel" C lick="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right " Margin="0,0,79,0" Grid.Row="1"/><TextBox x:Name="tbchildinfo" Margin="98,81,89,0 " VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap"/></Grid></basics:ChildWindow>4.在子窗体后台代码中添加一个字符串的属性和字段(用来保存子窗体输入的了字符串值)代码如下:public string childString;public string ChildString{get { return childString; }set { childString = value; }}5.在子窗体中的后台代码中创建一个EventHandle事件控制器(使父窗体能够用这个控制器获取子窗体中的的childString参数):public event EventHandler OkClicked;6.子窗体如图:用OK按钮来确认输入的TextBox值,事件代码如下:private void OKButton_Click(object sender, RoutedEventArgs e){//this.DialogResult = true;if (OkClicked !=null){childString =this.tbchildinfo.Text;OkClicked(this, new EventArgs());//设置事件控制器是子容口ChildWi ndowDemo.xaml本身所定义;}this.DialogResult =true;}7.此时的ChildWindowDemo..xaml.cs代码如图:8.在父窗体中添加一个TextBox文本框和一个按钮,并且添加相应的单击事件,MainPage.xaml代码如下:<UserControl x:Class="PassInfo.MainPage"xmlns="/winfx/2006/xaml/presentation"xmlns:x="/winfx/2006/xaml"xmlns:d="/expression/blend/2008" xmlns:mc="ht tp:///markup-compatibility/2006"mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> <Grid x:Name="LayoutRoot"><Grid Margin="220,208,121,114"><TextBox x:Name="tbinfo" Margin="4,5,7,0" Text ="getstring" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment ="Center" Width="196" d:LayoutOverrides="VerticalAlignment" Height="34"/><Button x:Name="btPopup" Click="btPopup_Click " Margin="0,76,65,46" Content="showChild" HorizontalAlignment="Right" Width= "79"/></Grid></Grid></UserControl>窗体如图所示:9.接下来处理父窗体调用子窗体的事件,首先在父窗体中定义子窗体对象:private ChildWindowDemo childwindowdemo =new ChildWindowDemo();10.MainPage.xaml窗体通过子窗体创建的事情控制器OkClicked可以调用子窗体的OkClicked事情,此事件包含子窗体的OKButton_Click事件信息,如图:11.通过单击showchild按钮来弹出子窗体输入信息。

安装Silverlight提示错误的解决办法

安装Silverlight提示错误的解决办法

安装Silverlight提示错误的解决办法
安装Silverlight 5时,如果你的VS不是英文版,那么可能会出现以下错误:Visual Studio 2010 SP1 that matches the language version of Silverlight 5 Tools must be installed before installation of Silverlight Tools can continue.
如图:
解决方法:
解压Silverlight_5_Tools.exe ,用记事本打开ParameterInfo.xml 替换1033 为2052 保存,接着运行SPInstaller.exe ,就可以安装了。

注:记得安装SP1 补丁;1033有很多,直接用全部替换就可以了;另外有可能提示找不到1033,复制xml文件里的1033到查找框就可以了。

安装Silverlight 4时也有可能碰到这样的问题,一样的解决办法:
解决方法:
解压Silverlight 4 Tool 安装包
用编辑工具打开ParameterInfo.xml 文件使用替换领命将“10.0.30319”替换成
“10.0.40219”(不包含引号)
保存,接着运行SPInstaller.exe ,就可以安装了。

silverlight页面跳转总结

silverlight页面跳转总结

private IsolatedStorageSettings appSettings = IsolatedStorageSettings.ApplicationSettings;然后在Button事件中加入如下代码,用于传值:
if (!appSettings.Contains("Page2"))
html.Navigate(new Uri("Default.aspx", UriKind.Relative));
四、页面传值(转载):
关于页面传值我仅仅说一下我的方式,当让网上也有其他的关于页面之间传值的方法。主要是使用独立存储的IsolatedStorageSettings对象,首先在UserControl中创建对象:
appSettings.Add("Page2", "UserName");
OK了,在目标页面获取值的方式就简单了.
if (appSettings.Contains("Page2"))
txbShowvalue.Text = "User Name: " + appSettings["Page2"].ToString();
App.RedirectTo(new MyXXXaml());
三、XAML页面跳转到aspx(或html)页面,在响应事件中键入以下代码即可:
HtmlWindow html = HtmlPage.Window;
html.Navigate(new Uri("Default.aspx", UriKind.Relative));
/// <summary>

Silverlight跨域在IIS中部署等问题解决方法

Silverlight跨域在IIS中部署等问题解决方法

Silverlight跨域,Silverlight在IIS 中部署等问题解决方法一:Silverlight 跨域Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。

跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web 服务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。

Silverlight 支持两种类型的跨域策略文件。

∙ Silverlight 跨域策略 (clientaccesspolicy.xml)∙ Flash 跨域策略 (crossdomain.xml) 的子集使用跨域策略文件的跨域通信通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件(clientaccesspolicy.xml)。

如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件(crossdomain.xml)。

不允许重定向跨域策略文件。

此外,跨域策略文件保持对应用程序会话有效。

现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。

跨域策略文件要放在哪里?注意:跨域策略文件必须也只能放在网站的放置在根目录下。

clientaccesspolicy.xml配置:<?xml version="1.0" encoding="utf-8"?><access-policy><cross-domain-access><policy><allow-from><domain uri="*"/></allow-from><grant-to><resource path="/"include-subpaths="true"/></grant-to></policy></cross-domain-access></access-policy>crossdomain.xml配置:<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" /></cross-domain-policy>二:Silverlight 在IIS 部署用silverlight开发的程序,部署到IIS 上,会经常弹出“Sys.InvalidOperationException: InitializeError error#2104 in control 'Xaml1': 无法下载 Silverlight 应用程序。

Silverlight改进总结

Silverlight改进总结

Silverlight改进总结交流1、Silverlight4新特性●打印API●RichTextArea 富文本控件(支持Paragraph,InlineUIContainer…)●ButtonBase和Hyperlink支持MVVM的ICommand接口●通过WebBrowser控件支持Html内容显示(只支持OOB 的Windowless,不支持输入中文)●Notification 提示框API●WebClient的网络认证●依赖对象绑定●IDataErrorInfo 和异步校验●XAP签名●自定义窗口外观●上下文菜单控件●SLLauncher silent installs2、应用INotifyDataErrorInfo实现异步校验通过Model类继承INotifyDataErrorInfo接口实现异步校验.一个方法public IEnumerable GetErrors(string propertyName)一个属性ErrorList = new Dictionary<string, List<string>>();添加错误列表,并显示到App.LoginedUser.AddError("LoginPassWord", "无效密码");public void AddError(string propName, string error){ErrorList[propName] = new List<string>();ErrorList[propName].Add(error);if (ErrorsChanged != null)ErrorsChanged(this, newDataErrorsChangedEventArgs(propName));}对应的属性和对应的校验提示信息支持TextBox, ComboBox, DatePicker3、WCF分页服务访问定义两个操作契约//返回二进制的数据表///<summary>///分页获取数据集///</summary>///<param name="sql">SQL语句</param>///<param name="startIndex">开始索引</param>///<param name="maxCount">如果是-1则不分页</param>///<param name="parameters">参数</param>///<param name="isStoredProcedure">是否存储过程</param>///<returns></returns>public byte[] ExcuteDataTable(string sql, int start, int size, List<SqlParameterInfo> parameters){…System.Data.DataSet ds = ExcuteDataTable(sql, start * size, size, parameters, false);//记录总的记录数ds.ExtendedProperties.Add("RecordCount", recordCount);var ms = new MemoryStream();//通过C1.C1Zip进行压缩using (var sw = new C1.C1Zip.C1ZStreamWriter(ms))ds.WriteXml(sw, XmlWriteMode.WriteSchema);//ds.WriteXml(ms, XmlWriteMode.WriteSchema);//返回XML的字节数组return ms.ToArray();}//更新数据public string UpdateData(byte[] dtAdded, byte[] dtModified, byte[] dtDeleted, string dataTableName){//对于不同DataRow….UpdateData(dtAdded, DataRowState.Added, transaction);UpdateData(dtModified, DataRowState.Modified, transaction);UpdateData(dtDeleted, DataRowState.Deleted, transaction);mit();….}void UpdateData(byte[] data, DataRowState state, OracleTransaction trans) {if (data == null)return;var ds = new DataSet();var ms = new MemoryStream(data);//通过DataSet的ReadXml方法恢复ds.ReadXml(ms);ds.AcceptChanges();foreach (DataTable dt in ds.Tables){foreach (DataRow dr in dt.Rows){switch (state){case DataRowState.Added:dr.SetAdded();break;case DataRowState.Modified:dr.SetModified();break;case DataRowState.Deleted:dr.Delete();break;}}}//计算总共有多少条记录public int CalculateRecord(string sql){string strCount = string.Format("select count(*) as co from {0}", tableName); }//分页获取数据集public System.Data.DataSet ExcuteDataTable(string sql, int startIndex, int maxCount, List<SqlParameterInfo> parameters, bool isStoredProcedure){...adapter.FillSchema(dt, SchemaType.Source);if (maxCount >0 )//分页处理adapter.Fill(ds, startIndex, maxCount, tableName);else//做分页dapter.Fill(ds);return ds;...}4、Silverlight端数据访问string sqlSel = "select * from 反馈需求记录where 编号=:BH";BasicHttpBinding binding = new BasicHttpBinding();EndpointAddress address = new EndpointAddress(newUri(Application.Current.Host.Source, "/WCFDataService.svc"));binding.MaxReceivedMessageSize = Int32.MaxValue;binding.MaxBufferSize = Int32.MaxValue;binding.SendTimeout = TimeSpan.FromMinutes(10);binding.OpenTimeout = TimeSpan.FromMinutes(10);binding.ReceiveTimeout = TimeSpan.FromMinutes(10);List<ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo> sqlParas = new List<ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo>();ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo sqlParaItem = new ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo();sqlParaItem.ParameterName = "BH";sqlParaItem.ParameterType = BizFieldType.文本;sqlParaItem.ParameterValue = bh;sqlParas.Add(sqlParaItem);WCFDataServiceRef.WCFDataServiceClient detailclient = new WCFDataServiceRef.WCFDataServiceClient(binding, address);detailclient.ExcuteDataTableCompleted +=delegate(object s,WCFDataServiceRef.ExcuteDataTableCompletedEventArgs e){if (e.Error == null){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();//解压缩using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];//绑定到DataGridView上this.DetailTab.DataContext =dt.DefaultView.Table.Select().First<DataRow>().GetRowView();}};detailclient.ExcuteDataTableAsync(sqlSel, 0, -1,sqlParas.ToArray());///<summary>///绑定分页///</summary>///<param name="sql"></param>///<param name="pageIndex">当前页索引</param>///<param name="pageSize">分页大小</param>///<param name="pager">分页控件</param>///<param name="selCol">是否有选择列</param>///<param name="grid">要绑定的DataGrid</param>///<param name="parameters"></param>private void BindGrid(string sql, int pageIndex, int pageSize, DataPager pager, bool selCol,Control grid, ZLBH.SL.App.WCFDataServiceRef.SqlParameterInfo[] parameters){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];if (pager != null){if (pager.PageIndex <= 0){object recordcount;//获得总的行数_ds.ExtendedProperties.TryGetValue("RecordCount", out recordcount);pager.BindSource(Convert.ToInt16(recordcount), 10);//绑定到DataPager的PageIndex事件pager.PageIndexChanged -= (s1, e1) =>{BindGrid(sql, pager.PageIndex, pageSize, pager, selCol,grid, parameters);};pager.PageIndexChanged += (s1, e1) =>{BindGrid(sql, pager.PageIndex, pageSize, pager, selCol,grid, parameters);};}}if(selCol)dt.DefaultView.Table.Columns.Add("选择",typeof(bool)); }5、Silverlight端数据更新string sqlSel = "select * from 反馈需求记录 where 1=2";WCFDataServiceRef.WCFDataServiceClient detailclient = new WCFDataServiceRef.WCFDataServiceClient(binding, address);detailclient.ExcuteDataTableCompleted +=delegate(object s,WCFDataServiceRef.ExcuteDataTableCompletedEventArgs e){if (e.Error == null){var ms = new MemoryStream(e.Result);DataTable dt = new DataTable();DataSet _ds = new DataSet();//获取一个空的数据表结构using (var zr = new C1.C1Zip.C1ZStreamReader(ms))_ds.ReadXml(zr);dt = _ds.Tables[0];dt.TableName = "反馈需求记录";DataRow newRow = dt.NewRow();DataRowView rowView =(DataRowView)newRow.GetRowView();rowView.SetData("ID", Guid.NewGuid().ToString());….rowView.SetData("附件", fjbyte);dt.Rows.Add(newRow);_ds.Tables.Clear();_ds.Tables.Add(dt);//获得相应DataRowState的记录的字节数组值byte[] dtAdded = GetChanges(_ds,DataRowState.Added);byte[] dtModified = GetChanges(_ds,DataRowState.Modified);byte[] dtDeleted = GetChanges(_ds,DataRowState.Deleted);WCFDataServiceRef.WCFDataServiceClientupdateClient = newWCFDataServiceRef.WCFDataServiceClient(binding,address);updateClient.UpdateDataAsync(dtAdded, dtModified, dtDeleted, _ds.Tables[0].TableName);updateClient.UpdateDataCompleted += newEventHandler<UpdateDataCompletedEventArgs>(updateClient_UpdateDataComple ted);}};6、IIS配置支持Silverlight在IIS6.0中,允许 V4.0 Web服务扩展注册如果 没有注册到IIS,在FrameWork4.0目录下运行Aspnet_regiis.exe – i增加对XAP和XAML文件的支持在新建网站的HTTP选项中,选择添加“MIME类型”加入.xaml、.xap、.xbap扩展名.xap application/x-silverlight-app.xaml application/xaml+xml.xbap application/x-ms-xbap允许匿名访问选择Internet来宾账户7、IIS配置支持WCF在FrameWork4.0目录下运行ServiceModelReg.exe -ia8、WCF配置文件设置启动IIS,通过WcfTestClient.exe测试调用服务,或者通过http://webSite/WCF服务.svc 访问测试获取MetaData元数据进行测试。

Silverlight:使用内联XAML

Silverlight:使用内联XAML

重要说明:内联 XAML 是一个仅可用于 Silverlight 的 JavaScript API 的概念。

内联 XAML 与Silverlight 的托管 API 不兼容。

使用内联 XAML由于它与浏览器 DOM 之间的关系,内联 XAML 构成了使用 JavaScript API 的深思熟虑的选择。

如果没有托管项目文件(该文件在其根目录下指定 x:Class)所了解的离散 XAML 文件,则内联 XAML 解决方案无法了解如何连接代码隐藏和 XAML,并且没有特定的指令来编译和连接托管代码。

若要使用内联 XAML,必须将 XAML 包括在一个特殊 <SCRIPT> 块中并指定“text/xaml”作为 type 属性。

XML 文档类型声明 <?xml version="1.0"?> 位于 XAML 内容之前。

XAML 内容必须唯一地标识,以便 Silverlight 插件的 Source 初始化参数可以引用它。

source 参数在 <SCRIPT> 元素中使用前缀“#”后接 id 值来标识 XAML 内容。

XAML 内容还可以定义在 HTML 页上引用事件处理程序的事件。

下面的 HTML 示例演示如何创建内联 XAML 内容。

在此情况下,HTML 页同时包含JavaScript 和 XAML 内容。

请注意指定 source 参数的 object 元素构造。

说明:包含内联 XAML 内容的 <SCRIPT> 元素必须位于包含 Silverlight 插件的 HTML 元素之前,该插件引用内联 XAML 来进行它的源初始化。

<html><head><title>Display Date</title><!-- Define Loaded event handler for TextBlock. --><script type="text/javascript">function setDate(sender, eventArgs){sender.text = Date();}</script></head><body bgcolor="Teal"><!-- Define XAML content. --><script type="text/xaml" id="xamlContent"><?xml version="1.0"?> <Canvasxmlns="/client/2007"Background="Wheat"><TextBlockCanvas.Left="20"FontSize="24"Loaded="setDate" /></Canvas></script><div id="silverlightControlHost"><object type="application/x-silverlight" width="100%" height="100%" id="slc"><param name="source" value="#xamlContent"/><param name="onload" value="onLoaded" /><param name="iswindowless" value="true" /></object><iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> </div></body></html>当显示此页时,表明已加载 Silverlight 插件且对于 TextBlock 对象引发了 Loaded 事件,这会导致 TextBlock 显示当前日期和时间(注:可编辑下载,若有不当之处,请指正,谢谢!)。

(完整word版)浅谈xaml语法

(完整word版)浅谈xaml语法

silverlight3 学习 5.1 浅谈XAML语法时间:2010—10-28 04:27来源:博客园作者:base 点击: 270次1,什么是XAML? XAML是由 Microsoft 开发的基于 XML 的标记语言。

而XAML文件是一个具有.XAML扩展名的XML文件。

XAML通过一种语言结构来显示多个对象之间的层次关系。

大致的意思就是表现Silverlight的界面.和HTML语言相似;如果对HTML语言有所了解的话,那么对于XAML便可以轻松掌握. 2, Silverlight中的XAML XAML最重要的1,什么是XAML?XAML是由 Microsoft 开发的基于 XML 的标记语言。

而XAML文件是一个具有“.XAML"扩展名的XML文件。

XAML通过一种语言结构来显示多个对象之间的层次关系。

大致的意思就是表现Silverlight的界面。

和HTML语言相似;如果对HTML语言有所了解的话,那么对于XAML便可以轻松掌握。

2, Silverlight中的XAMLXAML最重要的是,界面和代码分离,美工人员可以放心的制作显示界面而不用考虑对后台代码会产生影响.XAML还可以与Expression Blend进行界面设计交换。

Silverlight XAML 文件的内容:1 2 3 4 5〈UserControl x:Class="MySilverlight。

Page”xmlns="http://schemas。

/winfx/2006/xaml/presentation” xmlns:x="http://schemas.microso /winfx/2006/xaml”〉67 8 9 10 11 12 13〈Grid Background="OldLace” x:Name = “MyGrid”></Grid〉〈/UserControl〉UserControl:从字面的意思解释为“用户控件”,不错它其实就是用户控件的基类。

【WPF】CommandParameter解决多传参问题

【WPF】CommandParameter解决多传参问题

【WPF】CommandParameter解决多传参问题⽅法⼀:传参按钮控件⾃⾝绑定的ItemSource⽤WAF框架实现MVVM,按钮的点击事件都要通过Command来传递到这个View对应的ViewModel上,再通过ViewModel传递到上层的Controller层,在Controller层通过DelegateCommand处理按钮真正的事件。

有时候需要给该Command附加上⼀些参数(CommandParameter),但是默认CommandParameter只能传递⼀个参数。

⾕歌搜到的解决⽅法很复杂,于是想了个办法CommandParameter参数传递的是这个按钮控件⾃⾝绑定的ItemSource,然后通过从ItemSource⾝上的DataContext来拿到数据,再截取字符串分割得到想要的部分数据(或者强转为ItemSource对应的实体类)。

正常情况下,Button的绑定:<Button Command="{Binding BtnCommand}" />这个Command会沿着View –> ViewModle –> Controller层传递。

如果这个Button是ListBox的Item,这个ListBox的Item要使⽤数据模板,且ItemsSource绑定到了这组Button的数据源,是这样绑:<ListBox x:Name="listBox" ItemsSource="{Binding DataList}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"><ListBox.ItemTemplate><DataTemplate><Grid x:Name="grid"><local:WaitingProgress/><Button Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.BtnCommand}"CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"> <!-- 传参是Button控件绑定的ItemsSource,即这⾥是DataList列表 --><Image Tag="{Binding id}" x:Name="img" Stretch="UniformToFill" Width="150" Height="150" webImg:ImageDecoder.Source="{Binding icon}"></Image></Button></Grid></DataTemplate></ListBox.ItemTemplate><ListBox.ItemsPanel><ItemsPanelTemplate><WrapPanel Name="wrapPanel" HorizontalAlignment="Stretch" /></ItemsPanelTemplate></ListBox.ItemsPanel></ListBox>这个ItemSource绑定的DataList是ViewModle中的⼀个实例列表。

弹出窗口回传参数解决办法

弹出窗口回传参数解决办法

弹出窗口回传参数解决办法分两种弹出方式 window.showModalDialog 和 windows.open window.showModalDialogjs代码var rv = window.showModalDialog("Query_frame.aspx?key=" + key, "", "dialogWidth=500px;dialogHeight=230px;status=no;scroll=no;h elp=no");rv就是返回的字串,你可以把rv换成TextBox的value在弹出的窗口这样window.returnValue='返回的字符串';window.close();windows.open需要使用 window.openerwindow.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm 上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为:window.opener.document.getElementById("name").value = "输入的数据";<html><body><form name=form1><input type=text name=inpu ><input type=button onclick="javascript:window.open('back2opener.html?toname=o pener.form1.inpu');"></form></body></html>--------------------------------back2opener.html--------------------------------<html><body><form name=form1><input type=text name=inpu ><a class=under href=# onclick="{opener.document.form1.inpu.value+='孙超,';}">添加</a></form></body></html>在JS中,window.opener只是对弹出窗口的母窗口的一个引用。

Silverlight的弹出窗口展示-电脑资料

Silverlight的弹出窗口展示-电脑资料

Silverlight的弹出窗口展示-电脑资料背景年后来到公司实习,第一个星期没有项目,也就无所事是,此时有一位前辈和我说,他们有一个系统是基于Silverlight研发的,而其中使用的弹出窗口存在着不少的问题,因此如果可以的话,要我做出一个弹出窗口的功能,其子元素可以是自定义的任何控件,。

我很高兴进入公司才几天就能有这样的任务,每一次我去不同的公司实习,总是能在很短的时间内被“委以重任(当然更多的是我自己在自恋)”去进行可利用的基础设施的研发,非常感谢从大二开始都一直如此信任和看得我的各家公司,我想只有在这样的环境中才可以全力以赴……总之接下此任务的情况是这样的,那么至此我对Silverlight到底有多少的知识呢?答案是,零。

认识我的人都知道,我是非常非常没有美工水平的,因此对于几乎所有前台开发的技术都敬而远之,而其中如此新颖的Silverlight更是令我望而生怯。

但是事已如此,刚进公司也不能说我不会做,于是就硬着头皮上了,最终的结果是这样的:首先用半天的时间基本撑握了Silverlight的模型,包括了解了Xaml的语法如DependencyProperty, AttachedProeprty等,基本熟悉了相关的API,至于控件树之类的理念,Winform和Webform 也是基本相同的模型,因此熟悉起来也相对较快随后用半天的时间,折腾出了一个弹出窗口的原型,看起来确实相当地舒服,弹出一个窗口再关闭,弹出两个窗口再相继关闭,并没有出现特别大的问题然后,5分钟的时间内,发现这东西并不完美,存在着不少的问题,于是从架构上完全推倒了前一次的作品,很明显我的实现是基于一个错误的设计,也因此需要将整个模型进行重新的设计并进行再一次的实现经过再半天的努力,终于有了一个较为理想化的设计,并完成了这个版本的实现我们的选择对于弹出窗口这样的功能,我们在Silverlight中是有多种选择的,在介绍我的作品之前,我们先来看一下各种选择的优点和缺点选择1:MessageBox确实Silverlight中是有一个MesasgeBox的,和Winform中的一样,调用MessageBox.Show即可,但其也存在着不少问题,当然在这之前我们要先向好的一方面看优点:MessageBox是同步的,即Show方法调用后可以直接取得返回值,同步编程在简单性上相比异步编程有着非常大的优势,因此确实可以作为一个好的选择缺点:知道为什么各JS框架都要出个MessageBox么,就是因为alert这东西实在太难看了,而现在我们面对着更为绚丽的Silverlight 应用,在赏心悦目地享受着的同时,难道要时不时看到一个和alert窗口一模一样的家伙弹出又消失?选择2:PopupPopup是Silverlight基础类库提供的一个控件,可以直接完成弹出的功能优点:操作简单,可以用Xaml表述,封装了弹出的功能,样式可自定义,作为官方的解决方案甚为强大缺点:据前辈说,Popup中包含有DataGrid之类的复杂控件的时候,会有Bug出现,这也是需要我去完全做一个弹出窗口出来的主要原因……我的作品—PopupBox我没有办法称之为MessageBox,因为基础类库中有这东西我也没办法称之为Popup,因为基础类库中也有这东西我可不想自己的作品在出现之初就与基础类库有着冲突,要求调用者必须使用全局命名空间引用,更不想借用官方的名字给人产生混淆的感觉作为一个作品的展示,先来看看这东西是怎么使用的。

xaml 按钮 参数

xaml 按钮 参数

xaml 按钮参数XAML (Extensible Application Markup Language) 是一种用于创建用户界面的标记语言,常用于构建 Windows 应用程序。

在 XAML 中,按钮是常用的控件之一,用于触发用户操作。

在使用 XAML 创建按钮时,我们可以设置一些参数来定制按钮的外观和行为,从而提升用户体验。

首先,我们可以通过设置按钮的样式来改变其外观。

在 XAML 中,可以使用属性如 Background、Foreground、BorderThickness、CornerRadius 等来定义按钮的背景色、前景色、边框粗细和圆角大小。

通过调整这些参数,可以让按钮与应用程序的整体风格相匹配,使界面看起来更加统一和美观。

除了外观,我们还可以设置按钮的行为。

通过在 XAML 中定义 Click 事件处理程序,可以在用户单击按钮时执行特定的操作。

比如,可以在 Click 事件处理程序中编写代码来实现页面导航、数据提交、弹窗提示等功能,从而增强按钮的交互性和实用性。

另外,按钮还支持一些其他参数的设置,如 IsEnabled、IsVisible、ToolTip 等。

通过设置 IsEnabled 属性,可以控制按钮是否可用,从而灵活地控制按钮的可点击状态;设置 IsVisible 属性可以控制按钮是否可见,用于在特定条件下显示或隐藏按钮;设置 ToolTip 属性可以为按钮添加鼠标悬停提示,让用户了解按钮的功能或作用。

在使用 XAML 创建按钮时,需要注意一些细节。

首先,要根据实际需求选择合适的按钮类型,如普通按钮、图像按钮、复选框按钮等;其次,要合理布局按钮,避免按钮之间重叠或遮挡其他控件;最后,要保持按钮的命名规范和一致性,便于后续维护和管理。

总的来说,通过设置按钮的参数,可以定制按钮的外观和行为,提升用户体验。

在实际开发中,我们应该根据具体需求灵活运用这些参数,使按钮在应用程序中发挥最大的作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

public partial class A: UserControl, IContent
{
...
/// <summary>
/// 实现IContent接口
/// </summary>
public new UIElement Content
public new UIElement Content
{
get
{
return base.Content;
}
set
{
xmlns:vsm="clr-namespace:System.Windows;assembly=System.Windows"
(c)要弹出的地方,参考以下代码:
private void btnShow_Click(object sender, System.Windows.RoutedEventArgs e)
}}
3、"主Xaml"中以模态窗口方式弹出"子Xaml"
这个要用到sl3.0中的ChildWindow控件
(a)项目中先添加System.Windows.Controls的引用
(b)xaml文件头部加二行代码:
xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
{
ChildWindow win = new ChildWindow();
win.Title = "测试弹出窗口";
win.Content = new SubWin();
win.HasCloseButton = true;
win.OverlayBrush = new SolidColorBrush(Colors.Gray);
{
get
{
return base.Content;
}
set
{
base.Content = value;
这个比较容易,在主Xaml中放置一个容器类的控件(比如ScrollViewer之类),然后指定Content就行了,参考以下代码:
<ScrollViewer x:Name="viewer1" Canvas.Top="40" Width="400" Height="258"></ScrollViewer>
{
public partial class SubWin : UserControl
{
public Suห้องสมุดไป่ตู้Win()
{
InitializeComponent();
}
public SubWin(DateTime dt):this()
}
}}
public partial class B: UserControl, IContent
{
...
/// <summary>
/// 实现IContent接口
/// </summary>
public SubWin(DateTime dt)
{
InitializeComponent();
this.calendar1.DisplayDate = dt;
}
重点:调用该Xaml时,上面都是xxx = new SubWin()来处理的,现在我们可以用this.viewer1.Content = new SubWin(DateTime.Parse("1979-6-5"));来传递一个参数给SubWin
silverlight中不存在Flash中的场景,有的只是一个个Xaml文件,你要是愿意,也可以把它看做"场景"或"窗口",刚开始接触sl时,对于多个xaml之间如何切换,调用,传递参数感到很棘手,下面是我总结的几种方法:
1、A.xaml跳转到B.xaml
(a)首先需要定义一个公用的接口(interface),如下:
base.Content = value;
}
}}
(c)需要跳转的地方,类似下面这样处理:
private void btnChange_Click(object sender, System.Windows.RoutedEventArgs e)
using System.Windows;
namespace ChildWin.Code
{
public interface IContent
{
UIElement Content { get; set; }
}
}
(b)A.Xaml与B.Xaml都实现该接口,代码如下:
{
this.calendar1.DisplayDate = dt;
} }
}
这里我添加了一个带参数的构架函数做为测试,即public SubWin(DateTime dt):this(),这里接受一个日期型的参数,然后把日期控件的显示值设置为该参数,而:this()的作用是调用该构架函数前,先调用无参数的构造函数,即SubWin(),这种写法在本例中等价于:
{
(App.Current.RootVisual as IContent).Content = new Window2();}
上面的的意思是按钮btnChange点击后,当前"场景"将切换到Window2.xaml对应的"场景"
2、"主Xaml"中加载"子Xaml"(类似软件中的MDI窗口)
...
private void btnLoad_Click(object sender, System.Windows.RoutedEventArgs e)
{
if (this.viewer1.Content == null)
{
this.viewer1.Content = new SubWin();
win.OverlayOpacity = 0.3;
win.Width = 205;
win.Height = 205;
win.Show();
}
4、调用Xaml时的参数传递问题
可以利用构造函数来解决,参考以下代码
namespace ChildWin
相关文档
最新文档