gpt4 book ai didi

c# - 在 WinForms 中绑定(bind)到 WPF 托管控件的 DependencyProperty

转载 作者:行者123 更新时间:2023-11-30 18:08:40 25 4
gpt4 key购买 nike

我有一个 WinForms 应用程序,其中包含一些托管 WPF 用户控件的元素(使用 ElementHost)。

我希望能够将我的 WinForm 的控件属性 (Button.Enabled) 绑定(bind)到托管 WPF 用户控件 (SearchResults.IsAccountSelected) 的自定义 DependencyProperty。

是否可以将 System.Windows.Forms.Binding 绑定(bind)到由 DependencyProperty 管理的属性?

此外,因为我知道 System.Windows.Forms.Binding 监视 INotifyPropertyChanged.PropertyChanged 事件 - 由 DependencyProperty 支持的属性会自动触发这些事件,还是我必须实现和管理手动发送 PropertyChanged 事件?

最佳答案

DependencyObject 没有实现 INotifyPropertyChanged,因此如果您采用这种方式,则必须手动实现 PropertyChanged 事件的发送。

幸运的是 DependencyObject 确实有 OnPropertyChanged 方法,因此在您的 DependencyObject 派生类中实现 INotifyPropertyChanged 是微不足道的,例如:

public class MyClass : HeaderedContentControl, INotifyPropertyChanged
{
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
var handler = PropertyChanged;
if(handler!=null) handler(this, new PropertyChangedEventArgs(e.Property.Name));
base.OnPropertyChanged(e);
}
public event PropertyChangedEventHandler PropertyChanged;
}

我想附和 jsmith 的想法,即直接绑定(bind)到 UserControl 属性可能不是最好的选择。在大多数情况下,MVVM 是一种更好的方法。当然也有异常(exception)。

关于c# - 在 WinForms 中绑定(bind)到 WPF 托管控件的 DependencyProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041027/

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