这是我的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
发布于 2017-06-19 23:39:49
你对此采取了一种非常糟糕的做法,
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属性的代码
一种选择可能是您仅处理选中,这将仅在单击Ischecked变为true而不是取消选中时发生
因此,正如您的检查处理程序所做的第一件事是RemoveCheckedToggleButtons()一样,检查一旦设置就被取消设置
https://stackoverflow.com/questions/44629170
复制相似问题