1 Results for 'Known Issues'

  1. 2007.07.21 Known Issues (6)

실버라이트 1.1에서 알려진 문제점들과 그 해결책 혹은 회피책에 대한 글 모음이에요.

혹시 제가 잘못 알고 있는 사항이나 좋은 해결책이 있으면 제보 바랍니다.


Input Devie 관련

휠 마우스

  • 관련 이벤트 정보가 전혀 없음.
  • Scriptable 연동을 통해 호스트 HTML DOM으로부터 이벤트를 수신하여 코드-비하인드에 전달해야 함.

마우스 오른쪽 버튼

  • 제어 할 수 있는 방법은 없음.
  • silverlight.js의 createObject로 작성하면 호스트 HTML에서 발생되는 이벤트에 임의의 변형이 가해지는 것으로 추측함.

 키 입력

  • 대부분의 컨트롤이 상속하고 있는 UIElement 클래스에서 지원하는 KeyDown 이벤트는 Arrow키를 비롯한 몇몇 키에 대해서는 반응하지 않음(특히 Arrow키는 IE에서는 반응하지 않고 FF에서는 반응함).
    HTML DOM 상의 실버라이트 개체에 대한 Javascript 이벤트 핸들러를 코드-비하인드에서 작성하거나 Scriptable을 사용하여 키를 수신받을 수 있음.
  • HTML DOM 상에 실버라이트를 올리면 현재 페이지내에서 onkeypress 이벤트가 발생하지 않게 됨.
    따라서 onkeypress 이벤트를 keydown과 keyup 사이에 직접 구현해야만 함.
  • 실버라이트 개체가 있을 경우 javascript에서 일부 event.keyCode 정보가 제거됨.
    특히, 대소문자 구분이 되지 않고 한글을 비롯한 Unicode를 입력할 경우 항상 0xE5라는 값을 전달하므로 Unicode를 처리할 수 없으며 javascript로도 구분할 수 있었던 눌린 키의 실제 문자열값을 얻을 수 없음.
  •  위의 문제와 관련하여 keyup 이벤트에서는 약간 더 정확한 정보가 들어오지만 활용하기에는 무리가 있다고 생각됨.

 이미지 관련

  • SetSource에 다운로더를 설정하여 이미지를 다운 받을 경우 이미지의 Stretch를 Uniform으로 설정했을 때 가운데 정렬이 되지 않음, 이미지를 완전히 다운 받은 이후(Image.DownloadProgress == 1) 이미지 사이즈에 따라 원하는 영역에 가운데 정렬을 수작업으로 해줘야 함.
  •  SetSource에 다운로더를 설정하여 GIF 이미지를 다운 받을 경우 치명적인 오류 발생. 해결책 없음.
  •  이미지의 실제 사이즈는 Width와 Height을 한번도 설정하지 않은 상태에서 DownloadProgress 값이 1이 된 이후에만 알 수 있음. 문제는 다운로더를 사용하여 다운로더의 Completed 이벤트에서 Image.SetSource를 하여도 그 시점에서 다운로더의 DownloadProgress는 1이지만 이미지의 DownloadProgress는 0이 되며 이미지의 DownloaderProgress가 1이 되는 시점은 코드상에서 특정하기 어려움. 이 문제를 해결하기 위해서는 Image.SetSource를 다운로더로 설정하고 Timer나 다른 비동기적인 코드를 수행한 이후에 이미지의 사이즈를 조사해야 함.
  • 위와 관련하여, 이미지의 실제 사이즈를 얻으려면 다음의 조건을 모두 만족해야 함.
    1. 이미지의 Width와 Height이 한번도 수동으로 설정되지 않은 상태.
    2. 이미지는 반드시 루트 엘리먼트(캔버스)에 추가된 상태.
    3. 이미지의 Visibility가 Visible 상태. 단, Opacity가 0인 것은 관계 없음.
    4. 이미지의 DownloadProgress가 1인 상태.

커스텀 컨트롤 관련

  •   XAML에서 커스텀 컨트롤을 사용할 때 코드에서 재정의된 Width와 Height 어트리뷰트 뒤에 코드에서 새로 추가한 어트리뷰트가 오면 Width, Height이 정상적으로 설정되지 않음.
  1. <!--width와 height이 정상적으로 설정됨.-->
  2. <my:myControl MyAttribute="test" Width="100" Height="100"/>
  3. <!--width와 height이 정상적으로 설정되지 않음.-->
  4. <my:myControl Width="100" Height="100" MyAttribute="test"/>

일반적인 클래스 및 코드 관련

  • URI 클래스에서 일부 문자를 인식하지 못하는 문제. 애플리케이션은 다음의 경우를 고려하여 적절히 이스케이프 처리할 필요가 있음.
    1. 파일명에 .(dot)이 두개 연속으로 있는 경우
    2. %등의 HTTP 이스케이프 문자열이 있는 경우
  • 대부분의 기본제공 되는 엘리먼트들이 ActualWidth와 ActualHeight 속성을 제공하지 않으므로 내용에 따라 동적으로 크기가 변할 수 있는 Glyphs나 Canvas 엘리먼트의 실제 크기를 런타임에 알 수 없음. 해결 불가능.



이 글은 스프링노트에서 작성되었습니다.

신고
Posted by gongdo


티스토리 툴바