2011-02-03 5 views
2

두 개의 텍스트 색 인 ColorA와 ColorB로 사용자 지정 컨트롤을 만듭니다. ColorA는 컨트롤의 Foreground 속성에 연결되며 ColorB는 ForegroundAlt이라는 사용자 지정 종속성 속성에 연결됩니다. 두 속성 모두 Brush 개체입니다.XAML : 브러시를 색으로 변환 하시겠습니까?

<SolidColorBrush x:Key="BrushA" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" /> 

<SolidColorBrush x:Key="BrushB" Color="{Binding Path=ForegroundAlt, RelativeSource={RelativeSource TemplatedParent}}" /> 

내가 컨트롤 템플릿에 두 색상 간의 중소 텍스트 애니메이션을해야하고, 내가 문제로 실행하고 곳이다 : 컨트롤의 XAML이 마크 업을 사용하여 속성 값을 가져옵니다.

To="{Binding Source={StaticResource BrushB}, Path=Color}" 

를하지만 여기에 작동하지 않습니다

일반적으로, 단순히 같은 각 Brush.Color 속성에 데이터 바인딩을 만들 것입니다. you can't use bindings on an animation inside a control template으로 밝혀졌습니다.

해결 방법으로, 나는 브러시 자원과 함께 갈 Color 자원의 쌍을 만들고 싶습니다 :

<Color x:Key="ColorA" ??? /> 
<Color x:Key="ColorB" ??? /> 

Color 자원이 해당 브러시의 색상이 있어야합니다. 그런 다음 색상을 정적 리소스로 참조하고 애니메이션 내에서 데이터를 바인딩하지 않아도됩니다.

그래서, 여기 내 질문은 :

- 어떻게 Color 자원을 선언 할 것인가?

- 작업을 완료하는 간단한 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

이 내용을 올바르게 이해했다면 시도중인 내용이 작동하지 않습니다. Colors를 리소스로 정의하더라도 브러시 리소스에 바인딩해야하며 다시 사각형으로 돌아갑니다!

한 가지 해결책은 템플릿이 아닌 코드에서 수행하는 것입니다. 그것의 사용자 정의 컨트롤은 디자인을 망치지 않고 코드 뒤에 추가하는 것이 아주 간단해야합니다.

+0

나는 애니메이션 내에서 데이터 바인딩을 사용하지 않는 한 작동 할 것이라고 생각합니다. 그러나 저는 두 번째 자원을 피하는 더 나은 접근 방법을 연구 중입니다. 작동한다면 여기에 올리겠습니다. –

관련 문제