首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当代码隐藏中的ToggleButton更改时,更改代码隐藏中的IsChecked样式

当代码隐藏中的ToggleButton更改时,更改代码隐藏中的IsChecked样式
EN

Stack Overflow用户
提问于 2017-06-19 19:17:53
回答 1查看 559关注 0票数 0

这是我的ToggleButton

代码语言:javascript
复制
<ToggleButton ToolTip="Walk!"  Name="NavigateWalkOrbitToggleButton" Width="35" Height="35"  Style="{DynamicResource MetroCircleToggleButtonStyle}" Checked="NavigateWalkOrbitToggleButton_Checked">
     <iconPacks:PackIconMaterial Kind="Walk" />
</ToggleButton>

在后面的代码中:

代码语言:javascript
复制
private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)
{
    RemoveCheckedToggleButtons();
    NavisDocumentControl.Document.Tool.Value = Autodesk.Navisworks.Api.Tool.NavigateFreeOrbit;
}

当我单击它时,样式会正确地更改,但当我从代码后台将IsChecked更改为falsetrue时,样式不会更改。

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

EN

回答 1

Stack Overflow用户

发布于 2017-06-19 23:39:49

你对此采取了一种非常糟糕的做法,

DataTrigger将是一种更好的方法

这看起来像这样

代码语言:javascript
复制
<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>

考虑到您所展示的代码智慧,很难确切地说出为什么您的代码不能工作,因为您的代码甚至无法编译,这是因为

代码语言:javascript
复制
Checked="NavigateWalkOrbitToggleButton_Checked"

你的代码后面写着

代码语言:javascript
复制
private void NavigateWalkOrbitToggleButton(object sender, RoutedEventArgs e)

因此该事件处理程序不存在

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

一种选择可能是您仅处理选中,这将仅在单击Ischecked变为true而不是取消选中时发生

因此,正如您的检查处理程序所做的第一件事是RemoveCheckedToggleButtons()一样,检查一旦设置就被取消设置

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44629170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档