在Silverlight 4当中,针对拖曳的行为也有相当令人激赏的增强,这同时也让Silverlight中OOB应用程序所能达成的效果又向传统的WindowsForm应用程序逼近了一大步。
过去我们已经可以透过程序代码在Silverlight应用程序的画面中让对象(element)们被拖曳,现在在Silverlight 4当中,我们甚至可以把实体档案拖曳到浏览器上正在执行的Silverlight应用程序中。
Silverlight 4当中,针对所有的UIElement对象,增加了一个AllowDrop属性,您可以直接将其设定为True:
如此一来,该对象将被允许接收拖曳的档案,也就是说,您可以从桌面、档案总管等位置,把一个或多个档案拖曳到刚才你指定AllowDrop为True的Silverlight对象上:
logspot.com/_RnPgsDyRc2Y/S6XnGqgiVhI/AAAAAAAAAeY/sguCDRL6QUA/s320/P4001.jpg" border="0" alt="" />
这样还不够,这只是将控件设定为可以接受档案而已,当档案被拖曳到对象上之后,我们还需要去
开启它,并且透过程序代码来做一些额外的处理,例如开文件、显示…等动作。
我们可以在控件的Drop事件中来处理档案的开启与读取动作:
在上面的程序代码中,你会看到我们我们透过Drag事件的参数『e.Data』可以取得档案对象,由于对象可能是个档案集合(用户一次拖曳了多个档案),因此我们将其转为System.IO.FileInfo[]型别,接着透过foreach取得对象内容即可,上面的范例可以在TextBox中显示用户拖曳到画面上的文本文件(不过需要注意其
编码,上面的范例支持Unicode格式的文檔。