Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 设置自定义按钮控件模板前景的动画_.net_Silverlight_Silverlight 2 Rc0 - Fatal编程技术网

.net 设置自定义按钮控件模板前景的动画

.net 设置自定义按钮控件模板前景的动画,.net,silverlight,silverlight-2-rc0,.net,Silverlight,Silverlight 2 Rc0,我想根据控件的状态更改自定义按钮控件模板的前景属性/设置其动画 在RC0之前,我设置ContentPresenter的前景,给它一个x:Name,并在VisualStateManager转换中引用它 现在,ContentPresenter不再具有前景,因为它不再从控件继承。通常,我会将前景设置为应用于模板控件的样式。但我无法从VisualStateManager的转换/状态中引用这一点。我也不能将其包装在设置了前台属性的文本块中,并且(编辑:)边框没有前台属性 非常感谢您的帮助 更新: 我可以解

我想根据控件的状态更改自定义按钮控件模板的前景属性/设置其动画

在RC0之前,我设置ContentPresenter的前景,给它一个x:Name,并在VisualStateManager转换中引用它

现在,ContentPresenter不再具有前景,因为它不再从控件继承。通常,我会将前景设置为应用于模板控件的样式。但我无法从VisualStateManager的转换/状态中引用这一点。我也不能将其包装在设置了前台属性的文本块中,并且(编辑:)边框没有前台属性

非常感谢您的帮助

更新: 我可以解决一些带有边框的删除属性的问题,但不能解决与字体/文本相关的属性,包括前景


因为这似乎是不可能的,在我的特殊情况下,我能够用文本块替换ContentPresenter。

在ContentControl周围放置一个边框,并使您的VSM适用于该边框控件。

有一个解决此问题的方法。简单地说,你不能,因为你会强迫按钮中的任何内容有一个特定的前景色,而这个决定应该留给内容本身


无论如何,您可能想看看劫持依赖属性的概念,它使用另一个相同类型的属性来实现您的目的。这不是一个好的做法,但肯定会奏效。

只要按钮内容不复杂,用文本块替换ContentPresenter也会奏效。我有一个例子,其中按钮内容有一个图像和一个文本块。在这种情况下,不显示任何内容。将ContentPresenter替换为ContentControl,即可恢复前台属性

<ControlTemplate TargetType="{x:Type ButtonBase}">
    <ContentControl Content="{TemplateBinding Content}" Foreground="{Binding Foreground}" />
</ControlTemplate>

我为这个问题想出了一个解决方案,类似于我刚才注意到的一个现有的回答-

如果您愿意将可插入模板的可能内容类型限制为文本,那么它将非常有效: