2011-12-22 3 views
0

먼저, 이에 대한 답변을 찾으려고 오랫동안 노력했습니다. 나는이 문제에 대한 전문가의 도움을 받기 위해 여기에 갔다.StaticResource가 필요한 이유가 무엇인가요?

저는 현재 Windows Phone 7 용 프로그래밍에 대한 책을 읽었습니다. 현재 데이터 바인딩에 대해 배우고 있습니다. 주로 StaticResource의 기능에 관한 WPF에서의 DataBinding 포맷에 관한 질문을 보았습니다.

다음 코드에서 슬라이더와 텍스트 블록이 나타납니다. 텍스트 블록은 슬라이더에 바인드되어 슬라이더가 이동하면 텍스트 블록의 값이 변경됩니다. TruncationConverter 클래스가 만들어졌으며 "truncate"라는 키워드로 XAML에서 호출 할 수 있습니다. 전화 : ApplicationPage.Resources에 선언되어 있습니다.

그래서,이

<TextBlock Name="txtblk" 
Text="{Binding ElementName=slider, 
Path=Value, 
Converter={StaticResource truncate}}" 

권리 그리고 이것은 잘못된 것입니다

이 책은 정말 하나가 기능하기 전에 정적 리소스를 삽입해야하는 이유를 설명에 가본 적이
<TextBlock Name="txtblk" 
Text="{Binding ElementName=slider, 
Path=Value, 
Converter=truncate}" 

.

그럼, 왜 전화하기 전에 StaticResource를 넣어야할까요? 그것이 무엇이며, 그 기능은 무엇입니까? 잘라 내기 전에 StaticResource를 넣지 않으면 오류가 발생합니다.

미리 감사드립니다.

답변

0

기본적으로 정적 리소스 내가 가서 다른 컨트롤 또는 컨버터를 만들 말하거나하면 또 다른 예는 것과 같이

을 "자를"예를 들어의 기능을 보유하고있는 ResourceDictionary의 가능성이 외부 속성을 찾아 그것을 말하고있다 배치 브러시 또는 다른 인스턴스에서 응용 프로그램의 다른 요소를 통해 사용할 수있게하려는 경우에도 한 곳 (리소스 사전)에서만 편집 할 수 있지만 모두가 사용할 수있는 사용 가능한 리소스로 만들어집니다. a StaticResource

슬라이더와 Textblock을 배치 할 때와 마찬가지로 기본적으로 CoreStyles 리소스 사전에있는 스타일마다 스타일을 호출합니다. 그들이 무엇을했는지, 어떻게 보이는지 어떻게 바꾸고 싶다면 리소스를 복사하고 이름을 변경하고 이름을 변경하고 전화를 걸면

+0

1

으로 호출 할 수 있습니다. Converter 클래스의 생성자는 작업. 마크 업 확장 기능을 사용하려면 개체 그래프에서 개체를 미리 정의해야합니다.이 작업은 변환기 클래스에 키를 할당 할 때 수행됩니다. Xaml 파서가 StaticResource (또는 DynamicResource)를 볼 때 값이 발견 될 때까지 개체 그래프에서 위쪽으로 훑어보기 시작합니다. 런타임에 클래스의 인스턴스가 생성되어 사용됩니다. 변환기의 인스턴스가 만들어지면 WPF는 응용 프로그램의 수명 동안이를 사용합니다. 따라서 '정적'입니다.

변환기가 DynamicResource가 될 수 없기 때문에 'StaticResource'가 불필요한 것처럼 보일 수 있지만 Xaml의 구문 규칙과 같습니다.

+0

이것은 두 가지 좋은 답변입니다! 음 ... – parion

+0

"Petzold"라는 텍스트를 읽는다면 "Applications = Code + Markup"이라고하면 많은 WPF 내부 자료를 참조 할 수 있습니다. –

관련 문제