Material Design (WPF):禁用复选框动画

Posted

技术标签:

【中文标题】Material Design (WPF):禁用复选框动画【英文标题】:Material Design (WPF): Disable CheckBox Animation 【发布时间】:2021-01-31 19:06:08 【问题描述】:

如何禁用MaterialDesignInXAML 中的圆圈/波纹复选框动画? 我尝试了以下设置但没有成功:

md:RippleAssist.IsDisabled="True"
md:RippleAssist.Feedback="Transparent"
md:TransitionAssist.DisableTransitions="True"

【问题讨论】:

【参考方案1】:

假设您喜欢其中的所有其他功能,我认为您需要重新模板。

如果您在这里查看 materialdesigninxaml 的来源:

https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit/blob/master/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.CheckBox.xaml

(这是巨大的,否则我会把它全部粘贴在这里。)

您会注意到有一个称为“InteractionEllipse”的椭圆。您可以复制模板并将其撕掉。

                            <Ellipse x:Name="InteractionEllipse" Fill="TemplateBinding Foreground" Width="0" Height="0" Canvas.Top="12" Canvas.Left="12" Opacity="0" RenderTransformOrigin="0.5,0.5"
                                     IsHitTestVisible="False">
                                <Ellipse.RenderTransform>
                                    <TransformGroup>
                                        <ScaleTransform/>
                                        <SkewTransform/>
                                        <RotateTransform/>
                                        <TranslateTransform/>
                                    </TransformGroup>
                                </Ellipse.RenderTransform>
                            </Ellipse>

点击时会调用一个情节提要,您需要对其进行修改。或者也许只是删除。

                    <Storyboard x:Key="Click">
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Width)" Storyboard.TargetName="InteractionEllipse">
                            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="48"/>
                        </DoubleAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(FrameworkElement.Height)" Storyboard.TargetName="InteractionEllipse">
                            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="48"/>
                        </DoubleAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="InteractionEllipse">
                            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-24"/>
                        </DoubleAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="InteractionEllipse">
                            <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="-24"/>
                        </DoubleAnimationUsingKeyFrames>
                        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="InteractionEllipse">
                            <EasingDoubleKeyFrame KeyTime="0" Value="0.3"/>
                            <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/>
                        </DoubleAnimationUsingKeyFrames>
                    </Storyboard>

然后要么在你选择的复选框上使用你的新模板,要么用你自己在材料设计之后合并的资源字典中“覆盖”他们的版本。

另类。

您也许可以让它使用不同的画笔进行填充。您可以添加附加的依赖属性或动态资源。这样,您可以为部分或全部复选框选择透明,我认为它会消失。

模板绑​​定到前台

  Fill="TemplateBinding Foreground

【讨论】:

非常感谢!我复制了模板并删除了 ButtonBase 的 InteractionEllipse、Storyboard 和 EventTrigger。单击以使其正常工作。

以上是关于Material Design (WPF):禁用复选框动画的主要内容,如果未能解决你的问题,请参考以下文章

开发Google Material Design风格的WPF程序

在 WPF 中更改 Material Design DatePicker 的外观

对话框 XAML 和 Material Design WPF

WPF Material Design 凸起的按钮悬停状态

如何从 Material Design for XAML 覆盖 ComboBox ToggleButton?

材质按钮的禁用颜色状态