2010-01-08 6 views
3

나는 새로운 UserControl을 만들었 기 때문에 CSS 스타일의 사용자 지정 렌더링을 원합니다.CssStyleCollection을 UserControl에 사용하는 방법?

거기에서 나는 스타일이라는 이름 아래에 새로운 CssStyleCollection을 만드는 것이 쉽다라고 생각했습니다. 그래도 작동하지 않습니다! 이 코드를 어떻게 컴파일합니까? (단지 예)

class MyControl : UserControl{ 
    CssStyleCollection Style=new CssStyleCollection(); //compiler error on the `new..` 
} 

내가 여기서 잘못하고있는 것을 이해하지 못한다. CssStyleCollection은 봉인 된 클래스이지만 정적은 아닙니다. 새 인스턴스를 어떻게 생성합니까?

또한, 특정 컴파일러 에러

에는 생성자가 정의되지 않았습니다 System.Web.UI.CssStyleCollection 유형이다

+0

왜이 정확한 클래스를 사용하려고합니까? – Eilon

+0

UserControl은 일반적으로 다른 컨트롤 모음으로 구성됩니다. TextBox와 Button이 있다고 가정 해 봅시다. UserControl 자체에서 CSS 속성을 사용하는 것이 정말 직관적입니까? 글꼴 크기를 어떻게 설정합니까? 예를 들면? TextBox, Button 또는 둘 모두에 영향을 줍니까? –

+0

실제로 HeaderStyle 및 ContentStyle 유형의 것보다 많습니다. 머리글 및 내용은 모두 패널에있는 것처럼 처리됩니다. 상속이 쉽고 모든 컨트롤이 내용 패널에 표시됩니다 (렌더링은 걱정 스럽습니다.) – Earlz

답변

4

CssStyleCollection은 Style 개체에서 만들어집니다. Style 개체에는 CssStyleCollection을 반환하는 GetStyleAttributes 메서드가 있으므로 Style 개체를 만들고 원하는 모든 소품을 할당 한 다음 CssStyleCollection을 반환합니다. 또한 페이지 또는 컨트롤에 대한 참조 인 IUrlResolutionService가 필요합니다.

+1

MSDN - http :// /msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.style.getstyleattributes%28v=VS.100%29.aspx System.Web.UI.WebControls.Style 스타일 = 새 시스템입니다. Web.UI.WebControls.Style(); CssStyleCollection cssStyles = style.GetStyleAttributes (someControl); –

0

기술적으로 단지 적절한 방법 닷넷을 해킹하고, 확인 리플렉션을 사용하여 개인용 생성자라고합니다 ... http://bart-at-work.blogspot.com/2008/11/create-cssstylecollection-instance.html

음, CssStyleCollection에는 너무 특별한 것이 없으므로 나는 반사없이 단순하지만 우아한 해킹을했다.

CssStyleCollection Style=new Panel().Style; 

"안전하다"는 것이 확실하지 않지만 .Net과 Mono에서 작동하므로 잘됩니다.

+1

유형을 인스턴스화하기 위해 사적인 리플렉션을 사용하는 것은 결코 적절하지 않습니다. – Eilon

+0

그것은 나에게도 똑같은 느낌이 들지 않았다. 왜 내가 새 Panel(). Style 스타일을 사용했는지. 반사음은 내가 인터넷 검색을 할 때 찾은 유일한 방법이다. – Earlz

관련 문제