01. Adobe PhotoShop(*.psd)와 Adobe Illustrator(*.ai) 파일을 직접 가져올 수 있음.
02. WPF와 Silverlight 그래픽 효과(Effects) 지원
03. Gradient Tool 업그레이드
04. Layout 작업 업그레이드
05. 디자인 타임 주석
06. Artwork로부터 템플릿 만들기
07. Visual State Manager 지원 업그레이드
08. State Pinning
09. State Transitions 편집
10. State에서 그리기
11. 코드 편집 가능
12. 샘플 데이터 생성
13. 새로운 데이터 바인딩 지원
14. Silverlight 3 지원
15. TFS 지원
다시 정리하자면....
* Silverlight 3 지원 : SL3의 새로운 기능들을 제공 * SketchFlow : 디자인 전단계 처리와 프로타이핑 (이번 프리뷰에서 지원하지 않음) * 더 나은 비주얼 디자인 : 디자이너 친화 UI 제공 * 디자이너들을 위한 상호 작용 : Behaviors 디자인 패턴 적용 (Trigger와 Action 모델의 확장) * 샘플 데이터의 쉬운 생성 * 소스 버전 관리 지원 : TFS 통합
* XAML 에디터에 IntelliSense 지원 * 블랜드에서 새로운 코드 에디터 지원 * 새로운 도킹 시스템 도입
Beta 2와 Release의 차이점 관련 문서는 여기(영문)서 받을 수 있습니다. 다음 목록은 이 문서의 요약입니다. 더 자세한 사항은 문서를 참조하세요.
Breaking Change #1.
Your Web Page.
If you have a project already developed for beta-1 or beta-2 you will need to
make an adjustment to your web page that hosts the Silverlight control. For an
HTML page change you will need to change the MIME type. To do this, open your
HTML Page, change “x-silverlight-2-b1” or “application/x-silverlight-2-b2” to
“application/x-silverlight-2”.
ContentPresenter now derives from FrameworkElement instead of
Control.
Breaking Change #3.
Layout Rendering
Layout no longer causes elements to be rendered at sub-pixel locations. The
layout system in Silverlight has been modified to round final measure and
arrange values to integers when placing elements on the screen (“pixel
snapping”). The result is crisper lines, more consistent rendering look, and
fewer rendering artifacts. It is possible that this change will affect how your
animations render, in which case you might want to set UseLayoutRounding to
false. Also, this change does not affect transforms. If you apply a transform to
an element, it may still be rendered at a sub-pixel location.
Breaking Change #4.
Cross Domain Hosts.
Cross domain hosts of Silverlight must set the right MIME type for XAP
(application/x-silverlight-app)
Exceptions now thrown in HttpWebRequest.EndGetResponse()
Before:
Some security exceptions (e.g. cross-scheme violations) were being raised in
HttpWebRequest.BeingGetResponse()
All other request error conditions were being returned as 404s.
Now:
Error conditions are now raised as exceptions in
HttpRequest.EndGetResponse().
Request security errors (e.g. requests not allowed by cross domain policy)
raise SecurityExceptions
Non-successful requests (e.g. those that returned 404s) raise WebExceptions.
The WebException.Response is set to HttpStatusCode.NotFound. This is compatible
with the desktop.
Breaking Change #6.
Font URI
Font URI is Restricted to Assembly Resource. Ensure your font is marked as a
"resource" in the project system.
Browser.HtmlElementCollection replaced by Browser.ScriptObjectCollection.
Change existing references to HtmlElementCollection to
ScriptObjectCollection
System.Windows.Controls.Extended.dll renamed to System.Windows.Controls.dll.
Change all references from System.Controls.Extended to System.Windows.Controls
and recompile your application.
Breaking Change #10.
VisualStateManager Changes
VisualTransition.Duration has changed to VisualTransition.GeneratedDuration.
This value will now only affect the generated transitions, and not the
VisualTransition.Storyboard.
HtmlPage.UnregisterScriptableObject Removed. Developers can now re-use the
same script registration key for RegisterScriptableObject. This allows
developers to change the underlying managed object associated with a scriptable
entry point.
Breaking Change #15.
RenderingEventArgs
RenderingEventArgs is moved from System.Windows to System.Windows.Media
RenderingEventArgs.ctor() is now internal
System.Windows.RenderingEventHandler has been removed.
Breaking Change #16.
ContentPresenter and ContentControl.
The following properties were removed from ContentPresenter and
ContentControl:
TextAlignment
TextDecorations
TextWrapping
Breaking Change #17.
FileDialogFileInfo Type and OpenFileDialog.SelectedFile
The System.Windows.FileDialogFileInfo type is being removed. Its
functionality is now being exposed via its base System.IO.FileInfo type to
transparent code within Silverlight’s sandbox.
System.Windows.Controls.OpenFileDialog has a couple properties which consume
and expose FileDialogFileInfo. They were modified to return the FileInfo type.
In addition, the property names SelectedFile and SelectedFiles were also
changed to File and Files.
Breaking Change #18.
FullAccess Option
The ability for arbitrary scripts to walk the element tree, register for and
get notified on events, and use the Silverlight 1.0 Downloader from script has
been curtailed in a cross-domain app deployment scenario. The application
manifest previously supported the ability for app author to designate the
ExternalCallersFromCrossDomain attribute with the values NoAccess (default in
cross-domain), ScriptableOnly and FullAccess. Support for the FullAccess option
has been removed. Many of the purposes you would have relied on the FullAccess
option can now be fulfilled via the Scriptable object feature, with minor
additional work on your part.
Breaking Change #19.
KeyFrameCollection Changes
Virtual methods Add, Contains, Indexof, Insert, Remove, get_Item, set_Item
are no longer declared on the following collections:
ColorKeyFrameCollection.
DoubleKeyFrameCollection
ObjectKeyFrameCollection
PointKeyFrameCollection
PointKeyFrameCollection
StrokeCollection
Breaking Change #20.
Request stream
You must close the request stream on an HttpWebRequest before calling
BeginGetResponse(). Previously BeginGetResponse() would close an open request
stream.
Breaking Change #21.
HtmlWindow references on Safari/Mac
HtmlWindow references on Safari/Mac will no longer evaluate to
true.
Breaking Change #22.
WebClient EventArg
Address property removed from all WebClient EventArg classes
Breaking Change #23.
Constructors Made Internal
You can no longer create the objects listed below because their associated
constructors have been made internal:
SizeChangedEventArgs
TextChangedEventArgs
DownloadProgressEventArgs
ExceptionRoutedEventArgs
KeyEventArgs
MouseButtonEventArgs
MouseEventArgs
StartupEventArgs
Expression
GeneralTransform
Geometry
ImageSource
PathSegment
SetterBase
Transform
BindingExpressionBase
InputMethod
Breaking Change #24.
System.Xml exception type
In the methods/constructors shown below, we will no longer be checking for
null arguments. As a result, the usage of null arguments will result in a
NullReferenceException. In previous builds of Silverlight, use of a null
argument would result in an ArgumentNullException being thrown. There is no
change in functionality, just the type of exception that is being thrown.
XmlReader.IsName method
XmlReader constructor
XmlReader.MoveToAttribute method
XmlReader:IsNameToken method
XmlNamespaceManager constructor
XmlReader.Nametable.Add method
XmlReader.Nametable.Get method
XmlCharCheckingWriter.WriteQualifiedName method
XmlCharCheckingWriter.WriteDocType method
XmlConvert.ToBoolean method
XmlConvert.ToDouble method
XmlConvert.ToSingle method
XmlConvert.ToDateTime method
Breaking Change #25.
Accessible constructors
Cannot create classes in XAML that do not have accessible
constructors
Breaking Change #26.
AG_E_UNKNOWN_ERROR
In previous versions of Silverlight, when media failed because a media file
was not available, a MediaFailed event was fired but if the MediaFailed event
was not handled by the developer, the end user would not be notified of the
failure. Now when a handler is not hooked up to the MediaFailed event, the error
bubbles up to the default OnError handler of the plug-in and AG_E_UNKNOWN_ERROR
is displayed to the user.
Fix Required: Attach the MediaFailed event to your MediaElement objects and
handle errors as appropriate.
Platform looks for generic.xaml as a resource at
themes/generic.xaml
Breaking Change
#28. HTTP Polling Duplex OM Changes and Reengineering
PollTimeout setting on the server side (PollingDuplexHttpBinding and
PollingDuplexBindingElement) has been renamed to ServerPollTimeout
PollTimeout setting on the PollingDuplexBindingElement (client side) has
been renamed to ClientPollTimeout.
PollTimeout setting on the PollingDuplexHttpBinding (client side) has been
cut. In most scenarios, it should not be necessary to change this. If a change
is necessary, it can be achieved through the ClientPollTimeout on the
PollingDuplexBindingElement.
Client-side support has been cut from the non-Silverlight (server-side)
polling duplex assembly (i.e. BuildChannelFactory will throw a
NotSupportedException). That is, in RTM, the client side for polling duplex must
be Silverlight (and the server side must be the regular .NET Framework, but this
restriction was already in place in Beta2).
Default timeouts have been changed for the Duplex channel. For most common
scenarios, the new out-of-the-box defaults should be appropriate and there is no
need to change them.
An error (404) on a polling request will cause the duplex channel to fault.
Various invalid messages used to be ignored by the Duplex stack but will now
be rejected.
If any HTTP error (404,500,…) is encountered during a SOAP call, a
CommunicationException is now thrown instead of a ProtocolException.
Breaking Change #29.
IXcpControl COM interface
The following splash screen related properties added to IXcpControl interface
are being broken out and being moved to a new IXcpControl2 interface:
get_OnSourceDownloadComplete
get_OnSourceDownloadProgressChanged
get_SplashScreenSource
put_OnSourceDownloadComplete
put_OnSourceDownloadProgressChanged
put_SplashScreenSource
Breaking Change #30.
Content-Type is allowed on cross domain request by default
Both supported cross domain policy files (crossdomain.xml,
clientaccesspolicy.xml) no longer need to explicitly allow the Content-Type
request header. The Content-Type header is always settable on POST xdomain
requests, as long as the request itself is allowed by a cross domain policy
file.
In addition, the LoadRuntime function is also being moved to
IXcpControl2.
Breaking Change #31.
Delegate type check
f you want to combine two delegate objects they should be of the exact same
delegate type.
Breaking Change #32.
Miscellaneous API Changes
UIElement.HitTest method has moved to the VisualTreeHelper class and renamed
to VisualTreeHelper.FindElementsInHostCoordinates.
Moved DependencyPropertyChangedEventHandler delegate type from
System.Windows.Controls to System.Windows namespace.
Control.IsTabStop defaults to true. Now, all Control derived classes
(directly or indirectly) have IsTabStop set to true except, UserControl,
HyperlinkButton, ScrollViewer and ListBox.
WebHeaderCollection.Keys property was replaced with the AllKeys property.
WebHeaderCollection.Headers property was renamed to Keys.
WebRequest.RegisterPrefix() now returns false in failure cases per the
interface contract from the desktop framework rather than throwing an exception.
WebResponse.Dispose(bool explicitDisposing) was removed.
Deployment.PartProperty is now read only.
Deployment.EntryPointAssemblyProperty is now read only.
Deployment.EntryPointTypeProperty is now read only.
Deployment.RuntimeVersionProperty is now read only.
Deployment.ExternalCallersFromCrossDomainProperty is now read only.
Thumb.IsDragging is now read only.
Slider.IsFocused is now read only.
ButtonBase.IsFocused is now read only.
ButtonBase.IsMouseOver is now read only.
ButtonBase.IsPressed is now read only.
ToolTipService.GetToolTip is now private.
IRawElementProviderSimple is now sealed and has a private default
constructor.
Setter.PropertyProperty is now internal. Please use the CLR property instead
of the DependencyProperty.
Slider.UpdateTrackLayout() is now internal.
Slider.OnOrientationChanged() is now internal.
Slider.OnIsFocusChanged(DependencyPropertyChangedEventArgs e) is now
internal.
ComboBox.get_IsSelectionActive() is now internal.
ComboBox.ScrollIntoView(Int32 index) is now internal.
ComboBox.get_SelectionBoxItemTemplate() now returns
System.Windows.DataTemplate.
PasswordBox.SelectionChanged is now private.
MouseEventArgs.Handled was moved to MouseButtonEventArgs.
RenderTargetBitmap was renamed to HostingRenderTargetBitmap and moved from
System.Windows.Media.Imaging to namespace System.Windows.Interop.
AutomationPeer constructor is now protected.
TriggerActionCollection.Item now takes System.Windows.TriggerAction instead
of System.Windows.Media.Animation.BeginStoryboard.
TriggerCollection.Item now takes System.Windows.TriggerBase instead of
System.Windows.EventTrigger.
RoutedEventArgs.Source was renamed to OriginalSource and is now read-only.
ITableItemProvider and ITableProvider are now derived from IGridItemProvider
and IGridProvider.
The KeyboardNavigation class is now internal.
ColumnDefinitionCollection constructor was made internal.
InlineCollection constructor was made internal.
ItemCollection constructor was made internal.
RowDefinitionCollection constructor was made internal.
UIElementCollection constructor was made internal.
TriggerCollection constructor was made internal.
Listbox field ListBoxItem._itemsControl is now internal.
Ink.Stroke constructor changed to
ctor(System.Windows.Input.StylusPointCollection).
CanConvertFrom(Type sourceType) changed its signature to
CanConvertFrom(ITypeDescriptorContext context, Type sourceType).
CanConvertTo(Type destinationType) changed its signature to
CanConvertTo(ITypeDescriptorContext context, Type destinationType).
ConvertFrom(object value) changed its signature to
ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value).
ConvertFromString(string text) now is ConvertFrom(ITypeDescriptorContext
context, CultureInfo culture, object value) where value of type string.
ConvertTo(object value, Type destinationType) changed its signature to
ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value,
Type destinationType).
ConvertToString(object value) now is ConvertTo(ITypeDescriptorContext
context, CultureInfo culture, object value, Type destinationType) with
destinationType of type string.
ItemCollection constructor is no longer available so any code that tries to
instantiate an ItemCollection directly will no longer compile. This class is
supposed to be instantiated only within ItemsControl.
ContentPresenter now derives from FrameworkElement instead of Control.
Control.OnIsEnabledChanged was removed. Now use IsEnabledChanged for
extended controls.
Leave your greetings here.