我正在编写Xamarin Forms应用程序,并且在其他内容上有一个透明按钮,因此都可以单击。但是,当我将鼠标悬停在按钮上或在UWP中单击它时,会得到一些灰色动画。
问题已在此处描述:Diasble button animation or effects xamarin-forms
但是没有适合我的解决方案。
答案 0 :(得分:1)
UWP的问题在于,所有控件都将遵循UWP框架随附的样式。
在这种情况下,我们讨论的是Button样式,实际的实现可以在这里https://msdn.microsoft.com/en-us/library/windows/apps/mt299109.aspx
中找到因此,如果要禁用按钮的某些功能,则需要提供自己的UWP样式。
最简单的方法是将XAML样式代码从网站复制/粘贴到Xamarin表单解决方案的UWP项目中的App.Xaml中。
之后,看到您的请求,只需删除<VisualState x:Name="PointerOver">
和<VisualState x:Name="Pressed">
区域。
这样,OnHover或OnPressed上就不会有任何动画。
所以最终样式将是:
<Application.Resources>
<ResourceDictionary>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="RootGrid" Background="{TemplateBinding Background}">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<Storyboard>
<PointerUpThemeAnimation Storyboard.TargetName="RootGrid" />
</Storyboard>
</VisualState>
<VisualState x:Name="Disabled">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="RootGrid"
Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlBackgroundBaseLowBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
Storyboard.TargetProperty="Foreground">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledBaseMediumLowBrush}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter"
Storyboard.TargetProperty="BorderBrush">
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlDisabledTransparentBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="ContentPresenter"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Content="{TemplateBinding Content}"
ContentTransitions="{TemplateBinding ContentTransitions}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Padding="{TemplateBinding Padding}"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
AutomationProperties.AccessibilityView="Raw"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Application.Resources>