我需要在我的代码中的控件 (Slider.Value) 上设置依赖属性,而不触发 ValueChanged 事件(因为我设置了值,而不是用户)。在 WPF 中处理这种情况的最佳方法是什么?
为了澄清起见,我要做的是将 WPF 滑块连接到 WinForms 用户控件。目前在我的应用程序中,我有一个 ValueChanged 事件处理程序,它通过方法调用将滑块值传递给 WinForms 控件。WinForms 控件(实际上是原生 OpenGL 窗口的包装器)需要能够根据其内部计算动态更改滑块。为此,我使用了一个滑块 (ISlider) 的抽象,我在我的应用程序中实例化了该滑块的 WPF 风格,并通过 WinForms 用户控件上的 .NET 属性将一个句柄传递给 WinForms 控件。所有这些目前都在工作,只是当内部逻辑决定滑块需要更改时,它调用 ISlider::SetPos(),然后更改 WPF 滑块,然后在滑块上触发 ValueChanged 事件,并且该事件的处理程序提取滑块的位置并将其传递给最初发起该事件的 WinForms 控件。ligaz 和 Alan Le 的建议似乎都应该奏效,但我只是不确定我是否会以最好的方式解决这个问题。