gpt4 book ai didi

c# - C# WPF 中的只读复选框

转载 作者:IT王子 更新时间:2023-10-29 04:48:53 26 4
gpt4 key购买 nike

我遇到了一个棘手的问题,我想从复选框中获得一些稍微不寻常的行为,但似乎无法弄清楚。欢迎提出任何建议。我想要的行为是:

  1. CheckBox 已启用并准备好供用户单击,IsChecked 表示存储在数据结构中的绑定(bind) bool 值
  2. 用户单击 CheckBox 导致点击事件触发,但数据结构中的绑定(bind)值未更新且 CheckBox 的可视化表示未更新,但它被禁用以停止进一步点击
  3. 点击事件触发消息发送到远程设备,需要一些时间来响应
  4. 远程设备响应导致数据结构更新为新值,然后绑定(bind)更新 isChecked 状态并重新启用 CheckBox 以供进一步点击

我遇到的问题是,虽然 OneWay 数据绑定(bind)在单击 CheckBox 时不会更新数据结构,但视觉表示确实发生了变化(我认为这很奇怪,IsChecked 现在不应该像指向数据结构中的值)。

我可以撤销 Click() 事件中的更改并在那里禁用,但这非常困惑。我还可以使用数据结构值的 set 属性来设置一个 isEnabled 值,该值也必然会重新启用 CheckBox,但这看起来也很困惑。

有没有一种干净的方法来做到这一点?也许使用派生的 CheckBox 类?如何停止更新视觉表示?

谢谢

埃德

最佳答案

如何将数据绑定(bind)到 IsHitTestVisible属性(property)?

例如,假设采用 MVVM 方法:

  1. IsReadOnly 属性添加到您的 View 模型,最初设置为 true 以允许点击。
  2. 将此属性绑定(bind)到 CheckBox.IsHitTestVisible。
  3. 第一次点击后,更新您的 View 模型以将此值设置为 false,以防止任何进一步的点击。

我没有这个确切的要求,我只需要一个始终只读的复选框,它似乎很好地解决了这个问题。另请注意 Goran 在下面关于 Focusable 属性的评论。

关于c# - C# WPF 中的只读复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/921921/

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