Wpf 当选中时更改ToogleButton的颜色=";假;

Wpf 当选中时更改ToogleButton的颜色=";假;,wpf,xaml,material-design,Wpf,Xaml,Material Design,当然这个问题已经被问过了,但我还没有找到。我想在选中=“false”时更改ToogleButton的颜色。ToogleButton所在的网格背景为黑色。因此,当IsChecked属性为false时,用户可以看到: 如果IsChecked为true,则ToogleButton的颜色很好: 我用的是材料设计 我尝试了以下代码,但它更改了ToogleButton的形状: <ToggleButton IsChecked="{Binding Path=SelectedAllData,

当然这个问题已经被问过了,但我还没有找到。我想在选中=“false”时更改ToogleButton的颜色。ToogleButton所在的网格背景为黑色。因此,当IsChecked属性为false时,用户可以看到:

如果IsChecked为true,则ToogleButton的颜色很好:

我用的是材料设计

我尝试了以下代码,但它更改了ToogleButton的形状:

<ToggleButton IsChecked="{Binding Path=SelectedAllData, Mode=TwoWay}" 
                          Width="50" Height="20" Background="{StaticResource PrimaryHueDarkBrush}" Cursor="Hand">
                <ToggleButton.Style>
                    <Style TargetType="{x:Type ToggleButton}">
                        <Style.Triggers>
                            <Trigger Property="IsChecked" Value="False">
                                <Setter Property="Background" Value="{StaticResource PrimaryHueLightBrush}"/>
                            </Trigger>
                        </Style.Triggers>
                    </Style>
                </ToggleButton.Style>
            </ToggleButton>

另外,我想知道当
IsChecked=“true”
时,如何将
isEnabled
属性设置为
false
。谢谢

编辑


模板中
椭圆
填充
是当前硬编码的,因此您必须复制整个模板并对其进行编辑:

<ToggleButton>
    <ToggleButton.Template>
        <ControlTemplate TargetType="{x:Type ToggleButton}">
            <ControlTemplate.Resources>
                <SineEase x:Key="RippleEasingFunction" EasingMode="EaseInOut"/>
                <Storyboard x:Key="ShowRipple">
                    <DoubleAnimation Storyboard.TargetName="RippleThumb" Storyboard.TargetProperty="Opacity"
                                             EasingFunction="{StaticResource RippleEasingFunction}"
                                             To="0.26" Duration="0"/>
                    <DoubleAnimation Storyboard.TargetName="RippleThumb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)"
                                             EasingFunction="{StaticResource RippleEasingFunction}"
                                             From="1" To="2.5" Duration="0:0:0.2"/>
                    <DoubleAnimation Storyboard.TargetName="RippleThumb" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)"
                                             EasingFunction="{StaticResource RippleEasingFunction}"
                                             From="1" To="2.5" Duration="0:0:0.2"/>
                </Storyboard>
                <Storyboard x:Key="HideRipple">
                    <DoubleAnimation Storyboard.TargetName="RippleThumb" Storyboard.TargetProperty="Opacity"
                                             EasingFunction="{StaticResource RippleEasingFunction}"
                                             To="0" Duration="0:0:0.3"/>
                </Storyboard>
            </ControlTemplate.Resources>
            <Viewbox Width="34">
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="CheckStates">
                        <VisualStateGroup.Transitions>
                            <VisualTransition From="*" To="Checked">
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="ThumbHolder">
                                        <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="23.5">
                                            <EasingDoubleKeyFrame.EasingFunction>
                                                <QuadraticEase EasingMode="EaseOut"/>
                                            </EasingDoubleKeyFrame.EasingFunction>
                                        </EasingDoubleKeyFrame>
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualTransition>
                            <VisualTransition From="Checked" To="Unchecked">
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="ThumbHolder">
                                        <EasingDoubleKeyFrame KeyTime="0" Value="23.5"/>
                                        <EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0">
                                            <EasingDoubleKeyFrame.EasingFunction>
                                                <QuadraticEase EasingMode="EaseOut"/>
                                            </EasingDoubleKeyFrame.EasingFunction>
                                        </EasingDoubleKeyFrame>
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualTransition>
                        </VisualStateGroup.Transitions>
                        <VisualState x:Name="Checked">
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="ThumbHolder"
                                                         Duration="0" To="23.5" />
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Unchecked">
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)" Storyboard.TargetName="ThumbHolder"
                                                         Duration="0" To="0" />
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <Grid>
                    <Rectangle x:Name="Track" 
                                       Fill= "{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(materialDesign:ToggleButtonAssist.SwitchTrackOffBackground)}" 
                                       Opacity="0.26"
                                       HorizontalAlignment="Left" 
                                       Height="15" 
                                       Margin="4.211,5,4.211,0" 
                                       Stroke="{x:Null}" 
                                       VerticalAlignment="Top" 
                                       Width="40" 
                                       RadiusY="7.5" 
                                       RadiusX="7.5"/>
                    <Grid x:Name="ThumbHolder"
                                  HorizontalAlignment="Left" VerticalAlignment="Top">
                        <Ellipse x:Name="RippleThumb"
                                         Fill="{DynamicResource PrimaryHueLightBrush}"
                                         Height="25" Width="25"
                                         IsHitTestVisible="False"
                                         Opacity="0.26"
                                         Margin="0"
                                         HorizontalAlignment="Center" VerticalAlignment="Center"
                                         RenderTransformOrigin="0.5,0.5">
                            <Ellipse.RenderTransform>
                                <ScaleTransform ScaleX="1" ScaleY="1"/>
                            </Ellipse.RenderTransform>
                        </Ellipse>
                        <AdornerDecorator CacheMode="{Binding RelativeSource={RelativeSource Self}, Path=(materialDesign:ShadowAssist.CacheMode)}">
                            <Ellipse x:Name="Thumb"
                                             Fill="#FFFAFAFA" Stroke="{x:Null}" 
                                             HorizontalAlignment="Center" VerticalAlignment="Center"
                                             Width="25" Height="25"
                                             Margin="0,0,0,0"
                                             RenderTransformOrigin="0.5,0.5"
                                             Effect="{DynamicResource MaterialDesignShadowDepth1}">
                            </Ellipse>
                        </AdornerDecorator>
                        <ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}"
                                                  Margin="{TemplateBinding Padding}"
                                                  x:Name="ContentPresenter"
                                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
                                                  FlowDirection="LeftToRight"/>
                        <Grid.RenderTransform>
                            <TranslateTransform X="0" Y="0"/>
                        </Grid.RenderTransform>
                    </Grid>
                </Grid>
            </Viewbox>
            <ControlTemplate.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter TargetName="Thumb" Property="Fill" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" />
                    <Setter TargetName="Track" Property="Fill" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(materialDesign:ToggleButtonAssist.SwitchTrackOnBackground)}" />
                    <Setter Property="Foreground" Value="{DynamicResource PrimaryHueMidForegroundBrush}"/>
                </Trigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsChecked" Value="True" />
                        <Condition Property="materialDesign:ToggleButtonAssist.HasOnContent" Value="True" />
                    </MultiTrigger.Conditions>
                    <Setter TargetName="ContentPresenter" Property="Content" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(materialDesign:ToggleButtonAssist.OnContent)}" />
                    <Setter TargetName="ContentPresenter" Property="ContentTemplate" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(materialDesign:ToggleButtonAssist.OnContentTemplate)}" />
                </MultiTrigger>
                <Trigger Property="IsChecked" Value="False">
                    <Setter Property="Foreground" Value="{DynamicResource PrimaryHueMidBrush}"/>
                    <Setter TargetName="Thumb" Property="Fill" Value="Red" />
                </Trigger>
                <Trigger Property="Button.IsDefaulted" Value="true"/>
                <Trigger Property="IsMouseOver" Value="true"/>
                <Trigger Property="IsPressed" Value="true">
                    <Trigger.EnterActions>
                        <BeginStoryboard Storyboard="{StaticResource ShowRipple}"/>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <BeginStoryboard Storyboard="{StaticResource HideRipple}"/>
                    </Trigger.ExitActions>
                </Trigger>
                <Trigger Property="IsEnabled" Value="false">
                    <Setter TargetName="Thumb" Property="Fill" Value="#BDBDBD" />
                    <Setter TargetName="Track" Property="Fill">
                        <Setter.Value>
                            <SolidColorBrush Color="Black" Opacity=".12" />
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </ToggleButton.Template>
</ToggleButton>


通过设置
IsChecked
触发器的
Value
属性来更改颜色。在我的例子中,它被设置为红色。

要改变椭圆的颜色,需要设置哪个属性?@Queeng4:请再读我的最后一句话。它在这里:
。对不起,我刚才提到的是椭圆的容器。我不知道技术名称。您可以按您想要的方式设置名为“Track”的
矩形的
Fill
属性。