gpt4 book ai didi

wpf - 为什么不能将 OneWay 绑定(bind)到 ToggleButton IsChecked 属性?

转载 作者:行者123 更新时间:2023-12-04 05:06:59 25 4
gpt4 key购买 nike

ToggleButton 支持 ICommand,所以我创建了许多命令,例如 TogglePlayPause、ToggleMute,它工作正常,但我也需要绑定(bind) IsChecked 属性,所以它的检查状态总是显示正确的状态。但是当我为 ToggleButton 创建 OneWay 绑定(bind)模式并且当我按下 ToggleButton 时,绑定(bind)将丢失。

问题是为什么 ToggleButton 支持 ICommand 但不支持 OneWay 绑定(bind)?
我可以设置 TwoWay 绑定(bind),但 ToggleButton 使用 Command 时是个坏主意,因为 Command 处理的实际操作不应该与 TwoWay 绑定(bind)重复,有时也不可能。就我而言
命令=切换播放暂停
IsChecked={绑定(bind)到 IsMediaPlaying}
IsMediaPlaying 应该是只读的。

那么请告诉我如何将 ToggleButton 与 Command 一起使用并绑定(bind)其 IsChecked 属性?

最佳答案

你可以自己写OneWayToggleButton源自 ToggleButton并覆盖单击按钮时发生的情况:

public class OneWayToggleButton : ToggleButton
{
protected override void OnClick()
{
RaiseEvent(new RoutedEventArgs(ClickEvent, this));
if (Command != null && Command.CanExecute(CommandParameter))
Command.Execute(CommandParameter);
}
}

然后 IsChecked不会被按钮本身修改,只能通过绑定(bind)来改变。但是因为我们还在使用 IsChecked ToggleButton 的属性(property),控件的外观和行为将正常。

关于wpf - 为什么不能将 OneWay 绑定(bind)到 ToggleButton IsChecked 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com