把XAML放在服务端,即改即现.....
好晚了 都睡了把 呵呵.... 偷偷写博客玩 呵呵.....
先玩玩上面这个Silverlight的东西
首先看到上面的这个界面,把下面的代码
<UserControl
xmlns=
"http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=
"http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ed=
"http://schemas.microsoft.com/expression/2010/drawing"
Width=
"640"
Height=
"480"
>
<Grid x:Name=
"LayoutRoot"
Background=
"White"
>
<ed:BlockArrow Fill=
"#FFF4F4F5"
HorizontalAlignment=
"Left"
Height=
"50"
Margin=
"112,48,0,0"
Orientation=
"Right"
Stroke=
"Black"
UseLayoutRounding=
"False"
VerticalAlignment=
"Top"
Width=
"100"
/>
<ed:Callout AnchorPoint=
"0,1.25"
CalloutStyle=
"Oval"
Content=
"Callout"
Fill=
"#FFF4F4F5"
FontSize=
"14.666999816894531"
Height=
"100"
Margin=
"248,48,192,0"
Stroke=
"Black"
VerticalAlignment=
"Top"
/>
<ed:RegularPolygon Fill=
"#FFF4F4F5"
HorizontalAlignment=
"Left"
Height=
"100"
InnerRadius=
"0.47211"
Margin=
"64,0,0,116"
PointCount=
"5"
Stretch=
"Fill"
Stroke=
"Black"
UseLayoutRounding=
"False"
VerticalAlignment=
"Bottom"
Width=
"100"
/>
</Grid>
</UserControl>
复制到上面的文本框里,然后点击“显示界面按钮”....... 呵呵,没错,界面就显示了。
........。
不过更好玩的事情是,任意你给一份XAML,只要符合一下三个条件,把XAML复制到文本框里,然后点击显示界面按钮,都能显示该界面。
1:XAML格式良好,根为Page或者UserControl。
2:没有x:Class.. 这个
3:注意你的XAML没有引用第三方的类库。
..... 没错,你任意放修改XAML,然后点击按钮,就会显示界面。
源代码如下..... 因为代码实在太简单,就不往包里整了。
下面是按钮点击的代码。
private
void
button1_Click(
object
sender, RoutedEventArgs e)
{
string
xaml = textBox1.Text;
try
{
UserControl uc = System.Windows.Markup.XamlReader.Load(xaml)
as
UserControl;
ChildWindow c =
new
ChildWindow();
c.Content = uc;
c.Show();
}
catch
(Exception ee)
{
MessageBox.Show(ee.Message);
}
}
哈哈..... 代码好简单啊.....。
我的目标:即改即现。
在我们实际的开发中,我们的XAML哪怕只做了一个非常小的更改,我们想看看效果,都必须经过编译阶段。XAML必须重新打包近XAP。随着项目越来越大,编译和打包的时间也会越来越长。当项目比较大的时候,我们哪怕做一个非常小的功能的更改,都必须要整个重新生成一个新的XAP包。
而即改即现的意思,就是改了之后,不要编译,马上就能看到效果。
比如上面的小例子,几行代码实现了一个简单版本的”即改即现“。你把XAML做任意的符合条件的改动,点击一下按钮,效果即可出来。
当然上面那个东西不能实际做项目用,实际的项目开发当中,我们的Xaml当然不能在那个小小的文本框里编辑,最好用Blend编辑。(在这插句题外话.... 有朋友觉得学习Silverlight可以不用Blend,这绝对错误的观念。)
所以,如果能用Blend编辑XAML,并且能点个按钮,0.5秒内看到改的效果,我想那一定是件爽事。
上代码了呵呵
没错,上面我所说的,用Blend编辑,改完了点一下直接看的代码.... 如下。
https://files.cnblogs.com/MySilverlight/demo2.xap
代码说明:
1:在你打开这份代码之后,注意找到 ......\demo2\SilverlightApplication2.web\ClientBin\MyXaml\XamlShow 这个目录。这个目录下你会找到一个解决方案,请用Blend打开它。
2:打开之后 如图,找到三个可以即改即现的XAML。先 打开UserControl1.xaml
3:打开 SilverlightApplication2.sln,用VS打开。然后浏览Default.aspx页面。或者干脆按F5,你会看到如下界面
点击显示界面按钮,你会看到UserControl1的XAML加载后的界面。呵呵 是不是和Blend里一模一样??
没错,这事即改即现的.
你可以把这个UserControl1改为 UserControl2 或者 UserControl3.并且这三个文件都是即改即现的。注意Blend里编辑完之后要按Ctrl+s保存一下。
后话
这样对待我们的XAML,是不是感觉方便很多??当然,如果这种方式只能给我们改改XAML,只能当游戏玩玩,那我这文章也没啥价值了.... 如果在实际的开发中,真把XAML像这样放在服务端.....
你会问,这样把XAML放在服务端,那资源字典(样式文件)怎么半呢? 图片的加载怎么办呢? 在Blend里能显示图片,这个用这种机制还能显示吗??要引用第三方DLL咋办?? 这里的路径只有一个Test文件夹,可如果Test文件夹下有多个目录怎么半???
不过我知道,这里最大的难题,是.... CS文件怎么办? 要知道一个XAML,在我们之前的开发中,都要对应一个CS文件的。即便是用MVVM,这个页面也要有相应的CS代码与之对应......
呵呵,没错这些问题..... 我都解决了.....
预知后事如何,且听下回分解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?