【问题标题】:Change ToggleButton style in code behind when IsChecked changes in code behind当 IsChecked 在后面的代码中更改时,在后面的代码中更改 ToggleButton 样式
【发布时间】:2017-06-19 23:46:01
【问题描述】:

这是我的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 更改为 falsetrue 时,样式不会更改。

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

【问题讨论】:

  • 你的Style可能有问题?你能把MetroCircleToggleButtonStyle也发一下吗?
  • 是需要更改的代码,因为您应该使用样式中的数据触发器来进行更改,而不是代码后面,请参阅:wpf-tutorial.com/styles/trigger-datatrigger-event-trigger
  • 你也没有提供任何背后的代码,所以我们怎么能说什么是错的?
  • @MikeT NavigateWalkOrbitToggleButton.IsChecked = false;
  • 您的问题不可重现。您在 NavigateWalkOrbitToggleButton_Checked 事件处理程序中做什么?

标签: c# wpf togglebutton


【解决方案1】:

你在这方面采取了非常糟糕的做法,

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 而不是 Unchecked 时发生

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

【讨论】:

    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    相关资源
    最近更新 更多