问题标签 [dependencyobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
684 浏览

silverlight - 在 Silverlight 4 中绑定到 DependencyObjects 的集合

从 Silverlight 4 开始,可以针对 DependencyObject(而不是以前版本中的 Framework 元素)进行数据绑定。到目前为止一切顺利,但我如何再次绑定 DependencyObjects 的集合。

DataContext 不会从 ObservableCollection 传递到集合元素,因此永远不会调用 DependencyObjects 的 DependencyProperties(也不会调用更改的事件)。DependencyObject 都不提供 SetBinding 或 DataContext 来手动初始化绑定。

感谢您在这里的任何建议。

0 投票
4 回答
9375 浏览

wpf - WPF 自定义 DependencyProperty 通知更改

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

MyBackground 是一个派生自 DependencyObject 的类,它有一些 DependencyProperties。

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

0 投票
1 回答
300 浏览

c# - 使用 Linq 方法会导致在 WindowsBase 中缺少对 DependencyObject 的引用

我有一些我想在我的应用程序中使用 CodeDom 编译的 c# 源代码(用于插件)

一切正常,除非我在我的一些收藏中使用 Linq 扩展功能

当我尝试编译具有此代码的源代码时,CodeDom 抱怨我缺少对 WindowsBase 中 DependencyObject 的引用。

我不明白为什么会这样。Dictionary 类或 Any 扩展方法均未引用该类,该类显然是 Windows.Forms 的一部分

我通常会忽略这个怪癖,让 CodeDom 添加一个引用并继续前进,但显然 WindowsBase 是特殊的,并不总是分发的,我不想给可能没有正确安装它的用户造成问题。

0 投票
1 回答
1398 浏览

silverlight - Silverlight4 中 DependencyObject 的 DataContext 是什么?

我读过 SL4 引入了对派生自 DependencyObjects 的对象的属性进行数据绑定的能力,而以前的数据绑定仅适用于 FrameworkElements 或 FrameworkContentElements。

但是,我不清楚在绑定DependencyObjects的属性时如何确定绑定源。

对于 FrameworkElements,元素的 DataContext 属性是源对象(如果未直接设置 DataContext,则“向上走”以查找 DataContext)。

对于 DependencyObjects,我猜想使用的 DataContext 是 XAML 文件中“包含”FrameworkElement 的 DataContext。但是确定这个包含对象的机制是什么?

在我的特定情况下,我试图绑定位于 ObservableCollection 中的 DependencyObject 的属性,该 ObservableCollection 是 FrameworkElement 的属性。不幸的是,尝试在 DependencyObject 上绑定属性失败,因为数据绑定系统似乎将 DependencyObject 本身用作其自己的 DataContext。它抱怨(在输出窗口中)该类型没有具有在绑定表达式中指定的名称的属性。使用相同的绑定表达式绑定同一 UserControl 中的 FrameworkElement 的依赖属性是成功的。

0 投票
1 回答
2069 浏览

wpf - 在全局级别跟踪依赖属性值的变化

我的应用程序中有许多控件(用户可以将其添加到画布),每个控件都有不同的属性(主要是依赖属性)。用户可以通过属性网格更改其属性(如颜色、文本等)。

我已经实现了保存功能,所以如果用户在画布上进行任何更改,我们会要求他在离开之前保存文档。目前我正在跟踪类似添加/删除/调整大小的操作(将 IsChanged 标志更改为 true)。我还想跟踪用户所做的任何属性更改,比如他是否通过 propertygrid 更改了控件的颜色。

一种直接的解决方案是为每个属性处理 PropertyChangedCallback 并在其中设置标志。问题在于我必须为每个控件中的每个属性编写 PropertyChangedCallback,同时我必须确保添加的每个新属性都执行相同的操作。

我的问题:有没有其他更好的方法来跟踪财产变化,比如在全球某个地方?

0 投票
2 回答
2702 浏览

c# - UIElement 在运行时的转换错误

执行此操作时出现运行时错误。

我有这个类:

当我这样做时,它编译得很好,但会引发运行时错误......

我得到的错误是无法将 AnnObject 转换为UIElement.

有人可以简要解释一下这种行为吗?

0 投票
1 回答
6713 浏览

c# - How to get property name from the sender object of an INotifyPropertyChanged PropertyChanged event

I have a base DependencyObject class where I have a method that takes an object, gets the properties, and for each property that is a type that implements INotifyPropertyChanged, I add a new PropertyChangedEventHandler. Now in the handler method, it gets the parameters of an object "sender" and the PropertyChangedEventArgs "e". My question is, does anyone know how to dynamically get the property name if sender is a property of a type that implements the INotifyPropertyChanged.

Here is what I'm working with:

The SetValues method's first param is the DependencyObject type that will be used in the view model. The second param is the entity that is being returned from the DomainService's Context.LoadOperation.

What my issue boils down to is when the INotifyCollectionChanged.CollectionChanged fires I'm needing to be able to raise the PropertyChanged event with the collection's property name. So if anyone has any advise I would greatly appreciate it. Thanks in advance.

Edit
Figured out how to get the properties name that is firing the event. Here is an edited version of my PropertyChangedEventHandler.

Basically this does what I was looking for, but aparentyly I am still not doing something right. The UIElement is still not updating when the ObservableCollection that is a property of another type is being added to.

Here is an example of my DependencyObjects and ViewModel:

0 投票
2 回答
909 浏览

c# - 在代码中绑定到 DependencyProperty

我有一个从具有多个 DependencyProperties 的 DependencyObject 派生的对象。这个对象是给定的,我不能在这个对象中添加 ValueChanged 回调。

我希望收到任何属性更改的通知(在代码中,而不是 xaml)。当对象实现 INotifyPropertyChanged 时,您可以订阅 PropertyChanged 事件。这对 DependencyObjects 有什么作用?

0 投票
0 回答
240 浏览

.net - WPF 和 Silverlight 中的绑定 - 它实际上是如何工作的?

在 WPF 和 Silverlight 中,绑定是如何工作的?

我已经INotifyPropertyChanged在我的 ViewModel 对象上实现了,并且还在 UI 控件上使用了依赖属性。现在,我知道绑定系统将订阅PropertyChanged事件并在收到属性更改通知时更新 UI。我想知道这两种方法的内部工作细节——实现和从对象INotifyPropertyChanged继承。Dependency

0 投票
1 回答
1907 浏览

c# - ownerType 不是 DependencyObject 的 DependencyProperty 有什么用?

我刚刚开始在 WPF 中使用 DependencyProperties,我想在掌握它们的同时检查一些想法。

鉴于以下(暂时忽略命名约定):

我发现 dp2 抛出了一个 TypeInitializationException 消息“'MyTestClass' 类型必须从 DependencyObject 派生”,这是我所期望的,但 dp1 被非常高兴地接受了。

现在,我明白为什么 dp2 会引发异常,因为我试图在不是 DependencyObject 的类型上注册属性元数据,这很好。我查看了幕后,可以看到 dp1 和 dp2 都遵循的代码路径,所以我从代码的角度理解为什么 dp1 不会引发异常,但从概念上讲,我希望 dp1 和 dp2 都会引发相同的异常。

我的问题是在创建像 dp1 这样的 DependencyProperty 时有什么用,它的 ownerType 不是 DependencyObject,因为如果没有 DependencyObject 上的 GetValue/SetValue 方法,我看不到它如何使用。