这是我的ToggleButton
:
<ToggleButton ToolTip="Walk!" Name="NavigateWalkOrbitToggleButton" Width="35" Height="35" Style="{DynamicResource MetroCircleToggleButtonStyle}" Checked="NavigateWalkOrbitToggleButton_Checked">
<iconPacks:PackIconMaterial Kind="Walk" />
</ToggleButton>
并在代码背后:
private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)
{
RemoveCheckedToggleButtons();
NavisDocumentControl.Document.Tool.Value = Autodesk.Navisworks.Api.Tool.NavigateFreeOrbit;
}
当我点击它时,样式正在正确更改,但当我从后面的代码中将IsChecked
更改为false
或true
时,样式不会更改。
我正在使用xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls
答案 0 :(得分:0)
你采取非常糟糕的实践方法,
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>
鉴于你所展示的代码明智,很难确切地说为什么你的代码不能正常工作,因为你的代码甚至不会编译这是因为
Checked="NavigateWalkOrbitToggleButton_Checked"
你背后的代码说
private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)
所以事件处理程序不存在
此外,您不会显示您正在运行的问题代码,该代码会更改IsChecked属性
一个选项可能是你只处理Checked只会在单击Ischecked变为true而不是未选中时才会出现
因此,检查处理程序执行的第一件事是RemoveCheckedToggleButtons(),一旦设置
,检查就会被取消设置