컨트롤 템플릿 내에서 애니메이션을 적용 할 사용자 지정 컨트롤 속성을 어떻게 연결합니까?애니메이션에서 사용자 지정 컨트롤 속성 사용
여러 상태로 사용자 지정 단추를 만들고 있는데 상태가 변경 될 때 단추 텍스트의 색을 애니메이션으로 지정하려고합니다. 일반적으로 텍스트는 회색이며 MouseOver에서 검정색으로 바뀝니다.
나는 회색 텍스트 검정 텍스트에 대한 NormalTextBrush 및 FadedTextBrush을 만들어 :<SolidColorBrush x:Key="NormalTextBrush" Color="Black" />
<SolidColorBrush x:Key="FadedTextBrush" Color="DarkSlateGray" />
지금까지 너무 좋아. 내 애니메이션이 오류없이 실행됩니다. 마우스가 버튼 위로 이동하면 텍스트가 회색에서 검은 색으로 바뀝니다. 하지만 내가 정말로하고 싶은 것은 컨트롤을 사용하는 개발자가 텍스트 색상을 지정하게하는 것입니다.
그래서 두 텍스트 브러시를 컨트롤의 Foreground 속성에 대한 바인딩으로 다시 정의합니다. FadedTextBrush는 값 변환기를 사용하여 전경색을 페이드합니다. 재정의 된 리소스는 다음과 같습니다.
<SolidColorBrush x:Key="NormalTextBrush" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
<SolidColorBrush x:Key="FadedTextBrush" Color="{Binding Path=Foreground, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ColorConverter}, ConverterParameter='1.2'}" />
그리고 여기서 문제가 발생합니다. WPF는 컨트롤 템플릿 안의 애니메이션 바인딩을 허용하지 않습니다. "스레드간에 사용할 수 있도록이 Storyboard 타임 라인 트리를 고정 할 수 없습니다."라는 메시지와 함께 예외가 발생합니다. 문제는 here에 설명되어 있습니다.
그리고 그것은 내 질문에 가져온다 : 전경 속성에 유선 있도록 내 브러시 리소스를 설정하려면 어떻게해야합니까? 그래도 내 제어 템플릿에있는 애니메이션과 함께 사용할 수 있도록하려면 어떻게해야합니까?
누구나이 사람에게 대답 할 수있는 사람은 다음에 내가 당신을 볼 때 맥주를 사줄 것입니다! 당신의 도움을 주셔서 감사합니다.
내가이 질문에 답했기 때문에 나는이 응답을 받아 들였습니다. 그러나 더 간단한 해결책이 있다고 생각합니다. 저는 상태 변경 애니메이션을 덤프하고 스타일 트리거를 사용하여 상태를 변경하지 않고 애니메이션을 수행하려고합니다. –