构建第一个插件:
我要构建的第一个插件是用来显示我的项目概况和开发历史的,介绍的内容都放在服务器端的logs.txt文本中。下面开始构建:
1. 新建立一个SilverLight的类库项目,名字叫 WindCloud.Notes;
2. 删除掉默认的Class1.cs项目
3. 添加对公共项目 WindCloud.PubUnit的引用;
4. 添加一个SivlerLight用户控件,名字叫PageNote;
5. 修改界面布局:
l 添加表格和一个文本框,整个代码如下:
<Grid x:Name="LayoutRoot" Background="#EEFFFFFF" >
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock x:Name="txtNotes" FontSize="14" Grid.Column="0" Grid.Row="0" VerticalAlignment="Top" Text="TextBlock" TextWrapping="Wrap" />
</Grid>
6. 编写代码:
l 首先实现接口IPlugin:
public partial class PageNote : UserControl,IPlugin
#region IPlugin 成员
public IApplication Application
{
get
{
return App;
}
set
{
App = value;
}
}
public UserControl LoadUserControl()
{
return this;
}
public void SetVisibility(Visibility visible)
{
this.Visibility = visible;
}
#endregion
然后在插件加载完成之后添加一个按钮到服务器的界面上:
App.AddToolBar("Notes", this.GetType().ToString(), new Image());
最后获取服务器的日志文件并显示在文本框中:
//加载日志文件
WebClient wc = new WebClient();
if (wc.IsBusy)
{
wc.CancelAsync();
}
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri("logs.txt", UriKind.Relative));
显示日志文件爱你
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
System.IO.Stream s= e.Result as Stream;
using (StreamReader reader = new StreamReader(s))
{
this.txtNotes.Text= reader.ReadToEnd();
}
}
至此整个插件就完成:
主要步骤概括如下:
l 实现IPlugin接口
l 插件加载完成之后在界面上显示;
部署插件:
把插件生成的文件WindCloud.Notes.dll 拷贝到 Web的ClientBin目录先,然后修改配置文件WindCloud.Config.xml
<assembly xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<titlename>Notes</titlename>
<version>0.0.1</version>
<filename>WindCloud.Notes.dll</filename>
<typename>WindCloud.Notes.PageNote</typename>
<description></description>
</assembly>
添加一个插件项,至此。整个插件完成
效果演示:http://www.prolightsoft.com ,需要SilverLight 2.0的运行时。