Silverlight 4 - كيف يمكنني تغيير لون خلفية الزر عندما تركز بأسلوب زر ضمني؟
-
27-09-2019 - |
سؤال
أواجه قدرًا كبيرًا من الصعوبة في محاولة تحقيق شيء يجب أن يكون تافهًا. أنا أستخدم نمط زر ضمني محدد في ملف مورد XAML عالمي. أريد فقط تغيير لون الخلفية زر التركيز إلى الأحمر مع coloranimation. لقد جربت عددًا من المجموعات المختلفة في Storyboard.TargetProperty
و Storyboard.TargetName
ولم ينجح أي شيء. كيف يمكنني تحقيق ذلك؟
شكرا مقدما.
<Style TargetType="Button" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused" >
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="Button" From="Green" To="Red" Duration="00:00:01" />
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
...
المحلول
بما أنني لا أملك بقية أسلوبك ، فقد صنعت هذا مع حدود ومساعدين محتوى. هذا يعزز خلفية الزر من الأخضر إلى الأحمر بمجرد التركيز.
<Style TargetType="Button" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Grid.RenderTransform>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Focused">
<Storyboard>
<ColorAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
From="Green"
To="Red"
Duration="0:0:1" />
</Storyboard>
</VisualState>
<VisualState x:Name="Unfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border BorderBrush="Transparent" BorderThickness="1" CornerRadius="4">
<Border x:Name="border" Background="White" BorderBrush="Black" BorderThickness="1" CornerRadius="4">
</Border>
</Border>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" Width="Auto"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
نصائح أخرى
بعض الإجابات الجيدة هنا:
نمط الفأر على زر Silverlight/WPF http://forums.silverlight.net/forums/p/186402/427878.aspx
لا تنتمي إلى StackOverflow