我有一个从 Button 派生的控件:
public class ToolButton : Button
{
static ToolButton() {}
public ImageSource ImageSource
{
get { return (ImageSource)GetValue(ImageSourceProperty); }
set { SetValue(ImageSourceProperty, value); }
}
public static readonly DependencyProperty ImageSourceProperty =
DependencyProperty.Register("ImageSource", typeof(ImageSource), typeof(ToolButton), new UIPropertyMetadata(null));
}
和它的风格:
<Style TargetType="{x:Type wordplay:ToolButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type wordplay:ToolButton}">
<StackPanel Height="Auto" Orientation="Horizontal" Margin="4">
<Image Source="{TemplateBinding ImageSource}" Stretch="UniformToFill" />
<TextBlock Text="{TemplateBinding Content}" HorizontalAlignment="Left" Foreground="{DynamicResource TaskButtonTextBrush}" FontWeight="Bold" Margin="5,0,0,0" VerticalAlignment="Center" FontSize="12" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在我需要在鼠标悬停时为 TextBlock 宽度设置动画,所以当用户只用图像悬停按钮时,将显示文本。如果用户将鼠标指针移开,则文本将被隐藏。我希望将其设置为样式,以便它适用于任何 ToolButton。问题是 - 我不知道 ToolButton 的最终大小,所以我无法为宽度设置动画。我怎样才能做到这一点?