C# 检查代码隐藏中的更改时,更改代码隐藏中的切换按钮样式

C# 检查代码隐藏中的更改时,更改代码隐藏中的切换按钮样式,c#,wpf,togglebutton,C#,Wpf,Togglebutton,这是我的切换按钮: <ToggleButton ToolTip="Walk!" Name="NavigateWalkOrbitToggleButton" Width="35" Height="35" Style="{DynamicResource MetroCircleToggleButtonStyle}" Checked="NavigateWalkOrbitToggleButton_Checked"> <iconPacks:PackIconMaterial Ki

这是我的
切换按钮

<ToggleButton ToolTip="Walk!"  Name="NavigateWalkOrbitToggleButton" Width="35" Height="35"  Style="{DynamicResource MetroCircleToggleButtonStyle}" Checked="NavigateWalkOrbitToggleButton_Checked">
     <iconPacks:PackIconMaterial Kind="Walk" />
</ToggleButton>
当我单击它时,样式正在正确更改,但当我从“代码隐藏”将
IsChecked
更改为
false
true
时,样式不会更改


我正在使用
xmlns:Controls=”http://metro.mahapps.com/winfx/xaml/controls

您在这方面采取了非常糟糕的实践方法

DataTrigger是一种更好的方法

这看起来像这样

<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}"  BasedOn="{DynamicResource MetroCircleToggleButtonStyle}">
            <Setter Property="Foreground" Value="Blue"></Setter>
            <Style.Triggers>
                <Trigger Property="IsChecked" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </ToggleButton.Style>
    test
</ToggleButton>
你的代码后面写着

private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)
因此事件处理程序不存在

此外,您不会显示您正在运行的问题状态中更改IsChecked属性的代码

一个选项可能是,您只处理选中的,这只会在单击Ischecked变为true而不是取消选中时发生


因此,正如选中的处理程序所做的第一件事是RemoveCheckedToggleButtons()检查设置后会立即取消设置

可能您的
样式有问题
?您是否也可以发布
MetroCrceletogleButtonStyle
?是否需要代码隐藏更改,因为您应该使用样式中的数据触发器进行更改,而不是代码隐藏请参见:另外,您还没有提供任何代码隐藏,因此如何更改我们能说什么是错误的吗?@MikeT
NavigateWalkOrbitToggleButton.IsChecked=false;
您的问题不可复制。您在NavigateWalkOrbitToggleButton\u检查的事件处理程序中做什么?
Checked="NavigateWalkOrbitToggleButton_Checked"
private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)