2015-02-04 2 views
0

다른 환경의 UI 요소로 작업 할 수있는 런타임 구성 요소 (예 : C#으로 작성)를 만드는 방법이 있는지 궁금합니다.다른 환경에서 Windows 런타임 구성 요소와 UI 요소 전달?

예를 들어 Panel (C#) 또는 div (자바 스크립트)에 MediaElement과 같은 UI 요소를 추가하고 싶습니다.

cmpt.setPlayer((Panel) playerParent); (C#) 및 cmpt.setPlayer(getElementByClass('.playerParent')); (자바 스크립트)과 같은 런타임 구성 요소에서 메소드를 호출 할 수 있습니까? 어떻게 든 가능합니까?

그렇지 않은 경우의 함수는 C#에서 호출되는 하나의 자바 스크립트 하나를 선언하는 두 가지 방법을 가정 해 봅시다 제공 하나 런타임 구성 요소를 만들 수있는 방법이 (그리고 나는 완전히 이해 것)?

답변

1

HTML/CSS 렌더링 엔진 (JS 앱)과 C#/C++ 구성 요소 간에는 UI 요소를 공유 할 수 없습니다. C# 코드에는 HTML 요소 객체를 이해하는 기본 런타임이 없습니다. 마찬가지로 XAML의 UIElement는 JS 앱의 HTML/CSS 엔진에 아무런 의미가 없습니다. 요약하면 UI 요소를 해당 경계에서 공유 할 수 없으므로 Windows 런타임 구성 요소는 UI 이외의 기능을위한 것입니다.

두 번째 질문에서 구성 요소는 JavaScript로 구성 요소를 구현할 수 없기 때문에 사용자가 제안한 것을 수행하도록 구조화되어 있지 않습니다. 즉, 별도의 C# 및 JS 메서드가 필요합니다. 아이디어는 C# 또는 C++로 작성된 메소드가 런타임에 의해 으로 JavaScript에 투영되었지만 여전히 해당 언어로 구현된다는 것입니다.

Windows 용 UI 관련 라이브러리를 개발하는 사람들 Store 앱은 일반적으로 이러한 차이점 때문에 C#/C++ 및 JS의 별도 버전을 구현합니다. 물론 UI가 아닌 요소는 자체 WinRT 구성 요소에 포함될 수 있으며 구성 요소에서 오는 네임 스페이스에 JS 라이브러리를 추가 할 수 있다고 생각합니다. 그 이유는 후자가 다른 JS 개체처럼 JS에 투영되기 때문입니다. 이런 종류의 하이브리드 방식은 혼합 된 구현이 있어도 하나의 네임 스페이스에 API 표면 영역을 유지합니다. 나는 이것을 시도하지 않았다.

WinRT 구성 요소가 다양한 콜백을 사용하여 호스트 응용 프로그램에 UI 작업을 수행하도록 지시하는 것일 수도 있습니다. UI 작업은 반드시 UI 요소 작성을 포함해야합니다. 구성 요소는 매개 변수와 기본 데이터 모델을 관리 할 수 ​​있습니다. 즉 해당 콜백을 사용하여 UI 작업을 적절히 트리거 할 수 있습니다.

제 18 장 내 무료 전자 서적 인 Programming Windows Store Apps with HTML, CSS, and JavaScript, 2nd Edition에서 비동기를 포함한 WinRT 구성 요소를 철저히 처리했다고 언급 할 필요가 있습니다.

+0

이 놀라운 답변에 감사드립니다. 많이 도와 줬어! – malte

관련 문제