用Silverlight Web 如何制作mac 画图板板

Xaml内容:    
&Image.Resources&    
&Storyboard x:Name=&FadeOutAnimation&&
\\图片退出动画    
&DoubleAnimation Duration=&00:00:00.20& From=&1& To=&0& Storyboard.TargetProperty=&Opacity&
Storyboard.TargetName=&BigImage& /&    
&/Storyboard&
\\图片进入动画,播放完后,调FadeOutAnimation_Completed取下一图片并播放,因此达到自动播放效果    
&Storyboard x:Name=&FadeInAnimation& Completed=&FadeOutAnimation_Completed&&    
&DoubleAnimationUsingKeyFrames Storyboard.TargetName=&BigImage& Storyboard.TargetProperty=&(UIElement.Opacity)& BeginTime=&00:00:00&&    
&SplineDoubleKeyFrame KeyTime=&00:00:00.20& Value=&1& /&    
&SplineDoubleKeyFrame KeyTime=&00:00:03& Value=&1&/&    
&/DoubleAnimationUsingKeyFrames&    
&/Storyboard&    
&/Image.Resources&        代码:        
var listThumb = ImageStrip.Children.Where(o =& o.GetType() == typeof(Thumbnail)).ToList();        
int count = 0;    
foreach (UIElement ui in listThumb)    
Thumbnail thumb = ui as T        
if (thumb != null && count != number)    
thumb.DeSelect();    
else if (thumb != null && count == number)    
thumb.Select();    
picturebrifcontent.Text = picturebrif[number];    
}        
count++;    
楼主发言:1次 发图:0张
请遵守言论规则,不得违反国家法律法规同时转发到微博Current IssueReceive the MSDN Flash e-mail newsletter every other week, with news and information personalized to your interests and areas of focus.&&&&&& 根据第二节说述,我们能够从webService获取到相关的信息数据。那么我们如果要查询数据库的数据,就应该在webservice端使用Select 语句来查询到表,然后使用DataSet的GetXml()方法,获取到相应的XML格式化数据库表数据。在本实例中,我们在webService端模拟一串数据库表的数据。如下:
&NewDataSet&
&AddrName&四川&/AddrName&
&CityName&成都&/CityName&
&TelNum&028&/TelNum&
&AddrName&广东&/AddrName&
&CityName&广州&/CityName&
&TelNum&020&/TelNum&
&AddrName&北京&/AddrName&
&CityName&北京&/CityName&
&TelNum&010&/TelNum&
&/NewDataSet&
&&&&&& 在此XML数据中,我们可以很清晰的看出这个表包含AddrName,CityName,TelNum三个字段,然后这个表中有3行数据。
我们在Silverlight接收到这串数据的时候,我们需要在Silverlight端声明一个实体类。这个实体类拥有AddrName,CityName,TelNum三个属性,然后再每次实例化这个实体类,将实体类对象添加到一个实体类集合中去。这样子这个实体类对象集合就拥有了3行数据。在这里我们首先看实体类的源代码:
/// &summary&
/// 城市信息的实体类
/// &/summary&
public class CityInformation
private string _AddrN
private string _CityN
private string _TelN
public string AddrName
get { return _AddrN }
set { _AddrName = }
public string CityName
get { return _CityN }
set { _CityName = }
public string TelNum
get { return _TelN }
set { _TelNum = }
&&&&&& 在这里,我们接收到XML数据,解析,并且得到实体类对象集合的代码如下:
List&CityInformation& cityList = new List&CityInformation&();
//声明实体类集合,以保存实体类集合
using (XmlReader xReader = XmlReader.Create(new StringReader(xmlStr)))
xReader.Read();
while (xReader.Read())
xReader.ReadToFollowing("AddrName");
string addrName = xReader.ReadElementContentAsString();
xReader.ReadToNextSibling("CityName");
string cityName = xReader.ReadElementContentAsString();
xReader.ReadToNextSibling("TelNum");
string telNum = xReader.ReadElementContentAsString();
//解析一行数据库XML的数据。
CityInformation cityInfo = new CityInformation();
cityInfo.AddrName = addrN
cityInfo.CityName = cityN
cityInfo.TelNum = telN
cityList.Add(cityInfo);
//实例化实体类,然后将实体类添加到实体类集合中去。
catch (Exception ex)
this.ShowCityList.ItemsSource = cityL
//将实体类集合绑定到DataGrid
&&&&&&& 另外我们在这里需要设置DataGrid的列模板,因为他自动生成的列不能满足实际项目的需要。所以我们继续看一下XAML源代码:
&sdk:DataGrid HorizontalAlignment="Left"
AutoGenerateColumns="False"
Margin="28,71,0,0" Name="ShowCityList" VerticalAlignment="Top"
Height="271"
Width="324" &
&sdk:DataGrid.Columns&
&sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" IsReadOnly="True" Width="108"/&
&sdk:DataGridTextColumn Header="城市" Binding="{Binding CityName}" IsReadOnly="True" Width="108"/&
&sdk:DataGridTextColumn Header="电话区号" Binding="{Binding TelNum}" IsReadOnly="True" Width="108"/&
&/sdk:DataGrid.Columns&
&/sdk:DataGrid&
&&&&&& 当然在这里我们需要引入域名空间:&&& xmlns:sdk=""&&&&&&& 在这里我们AutoGenerateColumns="False"设置本DataGrid不自动生成列。
&&&&&&& &sdk:DataGridTextColumn Header="省会" Binding="{Binding AddrName}" IsReadOnly="True" Width="108"/&,本句中设置DataGrid列名为省会,绑定的是CityInformation实体类的AddrName属性。另外设置了本列的默认宽度为108.
&&&&&&&&至此,我们就将从webService获取到的数据绑定到了DataGrid。相信网上也会有很多类似的列子。在这里写出来,给需要的人看,也给初步接触Silverlight的TX看。希望能够写得简单明了一些。
&&&&&& 本例采用VS2010+Silverlight 4.0为开发环境。
&&&&&& 如需源码点击& 下载。
阅读(...) 评论()&&&&&&& Silverlight不支持读写服务器端的硬盘,可是很多时候用户需要在Silverlight客户端往服务器端上传文件,那么本节将讲述Silverlight中最简单的上传文件的方式:在Silverlight客户端将文件序列化为Byte[]字符组,然后服务器端使用webService接收客户端的数据并且还原为文件即可。
&&&&&&& 下面我们新建一个Silverlight应用程序解决方案SLUpload,然后在SLUpload.Web项目中鼠标右键点击此项目,添加一个web服务页面Upload。在此页面中写入下面代码:
/// &summary&/// 上传文件/// &/summary&/// &param name="FileByte"&文件的字节&/param&/// &param name="FileName"&文件名&/param&/// &param name="FileExtention"&文件扩展名&/param&/// &param name="SavePath"&文件保存地址&/param&/// &returns&&/returns&[WebMethod]public string Uploadfile(byte[] FileByte,string FileName,string SavePath){
//文件的保存位置
string filepath = SavePath + FileN
//判断在该位置是否有相同的文件。有的话则删除原来同名的文件
if (File.Exists(filepath))
//删除该位置的同名文件
File.Delete(filepath);
//根据传入的byte[]数据和文件位置创建一个FileStream实例
using (FileStream stream = new FileStream(filepath, FileMode.CreateNew))
//向文件中写入数据流
stream.Write(FileByte, 0, FileByte.Length);
return FileN}
&&&&&&& 这个Web服务方法的参数分别代表传输过来的文件内容字节组、文件名、文件保存路径。对于方法中使用的相关操作都在上面源码中有说明,我就不多说了。下面我们在SLUpload项目中鼠标右键点击项目名,然后&添加服务引用&,填入SLUpload.Web的upload.asmx页面的Url地址并且命名空间填写为UpLoadService点击确定,即在SLUpload项目中引用了webservice服务。下面我们看MainPage.xaml的代码如下:
&Grid x:Name="LayoutRoot" Background="White"&
&Button Content="上
传" Height="23" HorizontalAlignment="Left" Margin="20,36,0,0" Name="btnUpload" VerticalAlignment="Top" Width="75" Click="btnUpload_Click" /&
&ListBox Height="183" HorizontalAlignment="Left" Margin="112,36,0,0" Name="listBox1" VerticalAlignment="Top" Width="232" /&
&Button Content="清
空" Height="23" HorizontalAlignment="Left" Margin="20,88,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /&
&&&&&&& 下面我们看MainPage.xaml.cs的关键代码,注意这里需要引用:using System.IO;using SLUpload.UpLoadS这两个域名空间:
private void btnUpload_Click(object sender, RoutedEventArgs e)
//设置一个选择文件的窗口的实例,并且设置为多选
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect=true;
if (dialog.ShowDialog().Value)
//循环获取多选到的文件,然后将这些集合都通过调用webService上传
foreach (FileInfo file in dialog.Files)
//读取Stream
Stream stream = file.OpenRead();
stream.Position = 0;
//设置字节数组初始化
byte[] buffer = new byte[stream.Length + 1];
//将文件写入字节数组中
stream.Read(buffer, 0, buffer.Length);
string fileName = file.N
//调用webService服务方法上传文件
UploadSoapClient upfile = new UploadSoapClient();
//设置缓冲区存取的字符、文件名称、文件保存路径,并且调用方法上传
upfile.UploadfileAsync(buffer, fileName, "C:\\");
upfile.UploadfileCompleted += new EventHandler&UploadfileCompletedEventArgs&(upfile_UploadfileCompleted);
MessageBox.Show("你没有选择文件,请重新选择文件!");
void upfile_UploadfileCompleted(object sender, UploadfileCompletedEventArgs e)
this.listBox1.Items.Add(e.Result + "文件上传成功!");
private void button1_Click(object sender, RoutedEventArgs e)
this.listBox1.Items.Clear();
&&&&&&&& 这样一个最简单的Silverlight上传就做好了,但是在实际运行当中我们观察得出这种上传方式只能够上传小于2M的文件。那是因为ServiceReferences.ClientConfig文件的webService传输配置中设置的&maxBufferSize="" 。很显然,在实际中我们如果要传输大文件的话,就需要考虑将一个大文件切割成为数个小文件来进行传输。这是下一个话题。
&&&&&&&& 本实例采用VS2010+Silverlight 4.0编写。请点击& 下载源码实例。
阅读(...) 评论()

我要回帖

更多关于 windows画图板 的文章

 

随机推荐