-
[MSDN] Silverlight2 App를 Silverlight3 App로 변경하기Silverlight 2009. 4. 26. 08:56
이 글은 Silverlight runtime과 Silverlight tools가 Silverlight2에서 Silverlight3(Beta)로 변경되면서, 기존의 Silverlight2 기반의 어플리케이션이 수정되어야하는 부분을 설명하고 있습니다. 즉, 이 글은 Silverlight 3의 새로운 특징을 설명하는 것이 주 목적이 아닙니다.
다음 section들을 설명합니다.
- OpenFileDialog.ShowDialog – OpenFileDialog는 보안을 위해 User가 발생시키는 이벤트에 대해서만 동작합니다.
- HyperlinkButton – Silverlight의 Hyperlink 버튼은 전체 브라우저의 URL를 변경하지 않고, Silverlight plug-in이 호스팅 중인 IFrame의 URL만 변경합니다.
- Popup – Poupup Control에서 발생한 마우스 이벤트의 GetPosition이 제대로 작동하지 않던 버그가 수정되었습니다.
- ReadOnlyObservableCollection – ReadOnlyObservableCollection class가 포함된 Assembly가 System.Windows.Controls.Data.dll에서 System.Windows.dll로 변경되었습니다.
OpenFileDialog.ShowDialogWhat is affected: Silverlight 3 beta runtime을 사용하는 모든 어플리케이션
보안상의 이유로, OpenFileDialog의 ShowDialog 메서드는 유저가 입력을 통해 발생시킨 이벤트(키보드나 마우스) 또는 유저가 버튼을 누르거나 Checkbox를 체크했을 때만 실행되게 됩니다.
HyperlinkButtonWhat is affected: Silverlight 3로 재컴파일된 Silverlight 2 어플리케이션
Silverlight 2의 HyperlinkButton은 Browser마다 약간씩 다르게 동작했었습니다. 예를 들어, IE에서는 HyperlinkButton을 클릭하면 전체 브라우저의 URL을 변경하였고, 기타 다른 브라우저에서는 Silverlight Plug-in이 포함된 IFrame의 URL만 변경하였습니다.
Silverlight 3에서는 브라우저 종류에 관계 없이 Silverlight Plug-in이 포함된 IFrame의 URL만 변경하도록 수정되었습니다.
PopupWhat is affected: Silverlight 3로 재컴파일된 Silverlight 2 어플리케이션
Popup Control안에 존재하는 Element를 마우스 좌표를 구하는 GetPosition 메서드의 인자로 사용할 경우 제대로 좌표가 안나오는 문제 수정
XAML Code
<Popup>
<Border Name="border" MouseLeftButtonDown="OnMouseLeftButtonDown"/>
</Popup>
C# Code
void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
... e.GetPosition(border) ...
}
Silvelight 2에서는 Popup 안에 포함되어 있는 border를 GetPosition 메서드의 인자로 사용하더라도 Border가 기준이 되는 좌표가 나오지 않고 Silverlight plug-in 전체 화면을 기준으로 좌표가 구해졌습니다. Silverlight 3에서는 이러한 버그를 수정해서 border를 기준으로 정확한 좌표가 나옵니다.
ReadOnlyObservableCollectionWhat is affected: Silverlight 3로 재컴파일된 Silverlight 2 어플리케이션
ReadOnlyObservableCollection이 포함된 Assembly가 System.Windows.Controls.Data.dll에서 System.Windows.dll로 옮겨졌습니다. 그리고 다운로드 사이즈를 줄이기 위해, 사용 빈도가 낮은 메서드 들을 삭제했습니다.
Note
원본 글 주소
기존의 ReadOnlyObservableCollection을 사용한 Silverlight 2 어플리케이션은 XAP에 System.Windows.Controls.Data.dll을 포함하고 있습니다. Silvelight 3 런타임은 XAP안에 System.Windows.Controls.Data.dll이 포함되어 있다면 이를 참조해 ReadOnlyObservableCollection 클래스를 사용하기 때문에 현재 Silverlight 3에서 삭제된 메서드들도 문제 없이 사용 가능합니다.
http://msdn.microsoft.com/en-us/library/cc645049(VS.96).aspx