



























The first example shows attaching an event handler in Beta and the second example shows how to do it in RC.
For Silverlight Beta:
|
XAML |
<canvas onMouseLeftButtonDown="javascript:myhandler" />
|
For Silverlight RC:
|
XAML |
<canvas onMouseLeftButtonDown="myhandler" />
|
Remove "Sys." from namespaces in your code. For example, the beta code below:
|
JavaScript |
Sys.Silverlight.createObject(....)
|
Needs to be changed to:
|
JavaScript |
Silverlight.createObject(....)
|
Please make sure you use the latest Silverlight.js provided to you in your applications. A few changes have been made to this file. The plug-in has been renamed from “WPFe Plug-In” to “Silverlight Plug-In”. This plug-in is referred to in Silverlight.js file to detect Silverlight on the system. Also the MIME type of the plugin was changed from application/ag-plugin to application/x-silverlight. Finally, the namespace "Sys." was removed. Make sure all instances of "Sys." are pulled from your applications.
Due to difficulties in providing reliable synchronous downloads across all platforms, we’ve removed this feature from our downloader API. Consequently, we have removed the 3rd parameter on the download open API as is was no longer needed. You must update open calls to remove this parameter.
Once you have the version, you can write code that adds the extra argument to the downloader open method only when using Mix bits:
|
JavaScript |
function download(host, file) {
var dl = host.createObject("downloader");
dl.addEventListener("completed", downloadComplete);
// If Beta version add the extra argument
if (_mix) {
dl.open("get", file, true);
} else {
dl.open("get", file);
}
dl.send();
}
|
When processing the XAML the font specified by the Glyphs FontUri attribute is downloaded separately – asynchronously. This means that text displayed via the Glyphs element will appear once the font is downloaded – in most cases after other content has already appeared.
In 1.0 there is no event for Glyphs downloading progress when using the FontUri. To work around this you could use the Downloader object to first request the font file (and thus using the Downloader's progress events to know when it is downloaded).
Once the Downloader has finished downloading the font you can then create a Glyphs element with the FontUri specifying the exact same URI. Since the font is already downloaded it would not be downloaded again and the Glyphs element should render almost instantaneously.
NOTE: This does make an assumption that the font downloaded will remain in the browser's cache (no guarantees since this is user/browser specific) and will be picked up when the Glyphs element attempts to download the same file.
In order to reduce surface area, we removed Visibility.Hidden from the product. Prior to this change Visibility.Hidden behaved the same as Visibility.Collapsed. From the functionality stand-point, the Silverlight behavior is closer to the WPF Visibility.Collapsed hence we kept Collapsed. To create content that will work consistently between Beta and 1.0, replace all occurrences of "Hidden" in both XAML and script with "Collapsed".
For JavaScript, the following Beta code:
|
JavaScript |
sender.findName("fsm").visibility = "Hidden";
|
Needs to be changed to:
|
JavaScript |
sender.findName("fsm").visibility = "Collapsed";
|
And for XAML, the following Beta code:
|
XAML |
<Canvas x:Name="mask" Visibility="Hidden">
|
Needs to be changed to:
|
XAML |
<Canvas x:Name="mask" Visibility="Collapsed">
|
There are a set of ASX tags we previously silently ignored that we now result in a MediaFailed event. These tags are: PREVIEWMODE, BANNERBAR, PARAM, REPEAT, STARTMARKER, ENDMARKER and some MOREINFO tags. Also if a REF URL fails to open, SL does not fall back to other REFs in the same ENTRY. Instead, we will raise a MediaFailed event.
We report a greater number of parser errors in Silverlight 1.0 RTM. The applications will break in cases where the developer set a numeric property to an invalid value. The Beta bits treat the invalid value as “0” where as RTM throws an error. The following is an example:
|
XAML |
<TextBlock Width="Auto" Text="Created By:" />
|
“Auto” is not supported in Silverlight 1.0. In Beta bits the above caused the Width to be set to 0. Given that we do not clip TextBlock by Width, this did not impact the application behavior. This, however, will generate a parser error in V1.0 RC.
We’ve changed OnLoad, OnError, OnResize and OnFullScreenChange to be function-pointer based rather than string based. In order to develop Silverlight content that works on both 1.0 Beta and RC bits, you need to check the version and develop the application code accordingly. The following is an example using OnResize:
|
XAML |
if (Silverlight.checkVersion(_ag, "20416")) {
// Beta code path – use strings
_ag.content.onResize = "javascript:onResize";
ag.content.onFullScreenChange = "onFullScreenChanged";
} else {
// RC code path – use function pointers
_ag.content.onResize = onResize;
_ag.content.onFullScreenChange = onFullScreenChanged;
}
|
Elements in <*.Resource> blocks must be named. This means you have to have an x:Name property for all content in a <*.Resources> section. For example:
Silverlight Beta:
|
XAML |
<Canvas.Resources>
<Storyboard>
<!-- Content here... -->
</Storyboard>
</Canvas.Resources>
|
Silverlight RC:
|
XAML |
<Canvas.Resources>
<Storyboard x:Name="name">
<!-- Content here... -->
</Storyboard>
</Canvas.Resources>
|
This will mostly be seen in broadcast cases where previously we returned 0 for the "Position" value but now we return the play time. Also developers creating transport controls should be aware of this and the need to clip the media if necessary. For example:
Silverlight Beta:
|
JavaScript |
// set the slider thumb position in the right range of the track’s width
// assumes position is never greater than media’s naturalDuration
sliderThumb[“Canvas.Left”] = (myME.position.seconds/myME.naturalDuration.seconds)*sliderTrack.width;
|
Silverlight RC:
|
JavaScript |
// need to clip the slider position by the track’s width
if (myME.position.seconds >= myME.naturalDuration.seconds)
sliderThumb[“Canvas.Left”] = sliderTrack.width;
else
sliderThumb[“Canvas.Left”] = (myME.position.seconds/myME.naturalDuration.seconds)*sliderTrack.width;
|
Silverlight 1.0 RTM is stricter than Beta in throwing run-time errors for functionality not supported. Examples of such errors are:
We changed this behavior in order to maintain the cross platform support of Silverlight applications. All web resources should be renamed if they include a "\". For example, use "./assets/images/bg.jpg" instead of ".\assets\images\bg.jpg”
We did this change to be consistent across Silverlight and with WPF. An example of this change is that in RTM brush.relativeTransform.toString() would return "Transform" rather than "TransformGroup".
We no longer support the IsFilled property on PathFigure. Developers should remove it from their application code.
Silverlight Beta:
|
XAML |
<PathFigure IsFilled="true" .../>
|
Silverlight RC:
If you intend to remove event handlers during your Silverlight application lifetime, you must change the syntax by which you add the event handlers, and retain a token that is now necessary for the removeEventListener call. The token differentiates for cases where multiple handlers were attached for the same event. If you do not intend to remove event handlers, you can leave your addEventListener calls alone, although you should note that addEventHandler now also supports adding the handlers by reference rather than by a quoted name string. This change was made in order to give the Silverlight event object model better resemblance to other scripting object model syntaxes for adding events.
For JavaScript, the following Beta code:
|
JavaScript |
myObj.addEventListener(“MouseEnter”, myEnterHandler);
myObj.removeEventListener(“MouseEnter”, myEnterHandler);
|
Needs to be changed to:
|
JavaScript |
var enterToken = myObj.addEventListener(“MouseEnter”, myEnterHandler);
myObj.removeEventListener(“MouseEnter”, enterToken);
|
And for XAML, the following Beta code:
|
XAML |
<... x:Name=”myObj” MouseEnter=”myEnterHandler”/>
|
|
JavaScript |
sender.FindName(“myObj”).removeEventListener(“MouseEnter”, myEnterHandler);
|
Needs to be changed to:
|
XAML |
<... x:Name=”myObj” MouseEnter=”myEnterHandler”/>
|
|
JavaScript |
sender.FindName(“myObj”).removeEventListener(“MouseEnter”, 0);
|
The change is to remove the version property from the plug-in and add a new isVersionSupported method. This method takes a version string (eg. “1.0” or “1.1”) and returns a boolean indicating whether the plug-in is compatible with the requested version.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。