gpt4 book ai didi

WPF 自定义 DependencyProperty 通知更改

转载 作者:行者123 更新时间:2023-12-04 04:08:29 26 4
gpt4 key购买 nike

我有一个名为 MyComponent 的类,它有一个名为 BackgroundProperty 的 DependencyProperty。

public class MyComponent
{
public MyBackground Background
{
get { return (MyBackground)GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
public static readonly DependencyProperty BackgroundProperty =
DependencyProperty.Register("Background", typeof(MyBackground),
typeof(MyComponent), new FrameworkPropertyMetadata(default(MyBackground), new PropertyChangedCallback(OnPropertyChanged)));
}

MyBackground 是一个派生自 DependencyObject 的类,它有一些 DependencyProperties。
public class MyBackground : DependencyObject
{
public Color BaseColor
{
set { SetValue(BaseColorProperty, value); }
get { return (Color)GetValue(BaseColorProperty); }
}
public static readonly DependencyProperty BaseColorProperty =
DependencyProperty.Register("BaseColor", typeof(Color),
typeof(MyBackground ), new UIPropertyMetadata(Colors.White));

[...]
}

现在,我想要的是当来自 MyBackground 的属性发生更改时,通知 MyComponent MyBackground 已更改,并调用名为 OnPropertyChanged 的​​ PropertyChangedCallback。

最佳答案

请耐心等待一秒钟,因为您似乎正试图违背 WPF 的原则。由于您似乎正在编写与显示逻辑相关的代码,因此获取相关的典型方法DependencyObject s 相互交互是通过绑定(bind)。

例如,如果 MyComponent是某种控制,它使用 Background属性(property)在其ControlTemplate ,您将使用 TemplateBinding引用 Background属性(property)和任何重要的子属性(property)。

由于 1) 您可能已经知道,并且 2) 您没有使用模板或没有可用的模板,因此您可以在代码中设置绑定(bind)以响应对 Background 的更改。属性(property)。如果您提供更多关于您的 OnPropertyChanged 的详细信息方法我可以提供一些示例代码。

关于WPF 自定义 DependencyProperty 通知更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2856007/

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