问题标签 [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 回答
177 浏览

c# - PropertyChangedCallback 中的 DependencyObject 不是同一个对象

我的依赖属性出现了一些奇怪的行为。我在 MyControl 类中设置了以下属性。

后来,我设置了以下内容:

我设置了一个断点并检查了“this”的地址。然后我在 OnMyTempChanged 中设置了一个断点(见上文),并检查源地址。它与之前的“this”(MyControl)的地址不同。而且,数据也不一样。我设置的其他属性也不相同。看起来我有两个不同的 MyControl 对象实例。

这里发生了什么?我需要来自原始对象的数据……而不是我在 PropertyChangedCallback 中得到的混乱副本。

0 投票
1 回答
432 浏览

c# - 使依赖对象属性可绑定为静态资源?

如何使一组依赖对象属性可绑定以供以后绑定为静态资源?

我现在的代码,似乎我DependencyObject绕过了依赖属性系统......

我有以下课程:

在 XAML 中,我创建了一个资源数组,其中包含一些绑定,如下所示:

在调试绑定时,我注意到如果我删除 DP 的设置器,XAML 会显示一个错误,指出该属性丢失。我的理解是 XAML 使用 DP 系统来分配值从而启用绑定。在这种情况下,如果 XAML 需要一个“正常”属性,那么绑定是不可能的。任何人都可以启发我如何使它工作?

0 投票
1 回答
118 浏览

c# - 设置 DependencyProperty 的值并保留 OneWayToSource-Binding

如果我在一个属性DependencyObjectOneWayToSource Binding设置了一个,然后尝试再次设置 DP 的值,则将Binding被删除。我不能使用直接(正常)绑定的“反向”方式,所以我必须使用 OneWayToSource 绑定。我的问题是是否有另一种方法可以实现这一目标。

0 投票
1 回答
301 浏览

c# - 检测 PropertyChangedCallback 中的子属性变化并获取子属性

我将DepdendencyObjects 与PropertyChangedCallbacks 一起使用,并且我想检测此回调中的子属性更改。问题是DependencyPropertyChangedEventArgs-Object 只让我看到包含DP更改的属性的属性。有没有办法达到这个子属性?

有人会

并且 PropertyChangedCallback 被调用,因为MainProperty改变(不是SubProperty)。

0 投票
2 回答
153 浏览

c# - 未在列表框选择上更新自定义 WPF 绑定

我对这件可能微不足道的事情感到困惑。DevExpresses我在类的后代上有我的自定义属性LayoutGroup(不应该有任何区别 IMO):

然后我将 XAML 绑定到名为listStates.

绑定到 listStates 的对象列表包含两个属性(简化):

我错过了一些明显的东西吗?因为我希望当我更改列表框选择(单个)时,它也会更新IsExpanded组上的属性。我有更多工具绑定的子属性(如 所示DataContext="{Binding Tool}")并且更新得很好。因此,DataContext在列表框选择上正确更改。除了这个属性IsExpanded(应该展开/折叠布局组)。

我在做什么错,以及如何做到这一点,当列表框更改时,IsExpanded将轮询绑定以从中获取值IsTool,并将设置它(取决于选择)。

0 投票
1 回答
770 浏览

c# - 在 UI 线程之外使用依赖对象的最佳实践

正如标题所暗示的那样,我发现自己在这种情况下相当多,并且相信我做错了什么。我经常想要一个根据后台任务的工作不断更新的 UI,但发现简单地尝试更新 UI 和在 UI 线程上工作之间的分离可能很难找到。

假设我有一个简单的 DependencyObject:

这些对象存储在称为 mTaskItems 的 ObservableCollection 中。在一些用户事件上,我想对这些对象做一些工作:

我无法检查上述示例中 TaskItem 的 DependencyProperty 状态,因为它现在位于拥有它的不同线程上。

如果您想在处理过程中更新 UI,或者我是否以完全错误的方式处理这个问题,那么在整个业务逻辑中散布调度程序是否正常?

我的依赖对象是否应该根本不用作业务数据容器,而只是作为 UI 数据容器存在?(如果是这样,链接它们的最佳设计是什么?)

谢谢。

0 投票
1 回答
299 浏览

visual-studio - 使用 Dependency 对象进行彩色动画 WP8

我在它的 ControlTemplate 中使用了一个我已经塑造它的按钮。我还在 controlTemplate 中添加了一个故事板。故事板更改了我的 controlTemplate 中元素的边界。我从后面的代码中访问它并激活它,问题是当我在手机上执行此操作时会有延迟。我在 MVVM 结构之后构建了我的代码,我的观点是:

还有我激活故事板的 ViewModel 部分:

我已经读过可以为动画使用依赖对象,但我不确定它是如何工作的,或者它是否会工作,但是任何尝试为动画实现依赖对象的帮助将不胜感激。

0 投票
2 回答
2182 浏览

c# - XAML 绑定到 UserControl 中的 FrameworkElement

我得到了一个具有多个属性的自定义用户控件(MyControl)(效果很好)。我想要一个新属性,让使用 UserControl 的页面“粘贴”一些内容直接显示在 UserControl 中 - 例如。路径。我努力了; ContentPresenter,ContentControl,StackPanel,没有运气......

MyControl.xaml

MyControl.xaml.cs

SomePage.xml

0 投票
1 回答
185 浏览

c# - WPF:自定义 DependencyObjects 的值继承?

我正在尝试在自定义 WPF DependencyObject 中为 DependencyProperty 实现值继承,但我失败了:(

我想做的事:

我有两个类T1T2都有一个 DependencyProperty IntTest,默认为 0。T1 应该是 T2 的根,就像 Window 是它包含的 TextBox 的逻辑根/父级一样。

因此,当我没有明确设置T2.IntTest的值时,它应该提供T1.IntTest的值(就像 TextBox.FlowDirection 通常提供父窗口的 F​​lowDirection 一样)。

我做了什么:

我创建了两个类 T1 和 T2,从 FrameworkElement 派生,以便将FrameworkPropertyMetadataFrameworkPropertyMetadataOptions.Inherits一起使用。我还读到,为了使用值继承,您必须将 DependencyProperty 设计为 AttachedProperty。

目前,当我为根 T1 赋值时,子 T2 的 DP-Getter 不会返回它。

我究竟做错了什么???

这是两个类:

这是试用它的代码:

0 投票
1 回答
193 浏览

c# - 也实现 INotifyPropertyChanged 的​​ DependencyObject?

ObservableCollection对于 Silverlight 和 WPF 应用程序,我有一个包含作为依赖项属性的自定义控件。该控件的一个元素 Border 需要根据ObservableCollection.

例如,假设集合是动物、蔬菜和矿物质,并称为ObjectList. 如果至少有一只动物,我希望边框是红色的;如果没有动物,但至少有一种蔬菜,它是绿色的;否则该集合只有矿物,因此将显示为蓝色。

我创建了一个可以获取集合并确定颜色的转换器,因此具有如下绑定:

挑战在于,随着项目的添加/删除,ObjectList我需要触发对背景颜色的重新评估;然而,ObjectList它本身并没有改变。我想我有三个选择,但不确定哪个可能是最佳实践:

  1. 每次添加或删除对象时创建一个新集合。这似乎很严厉,但会导致ObjectList被更改并因此触发后台更新。

  2. 在回调中调用UpdateTargetbackground 属性。由于不适用于 Silverlight,我只是删除并重新添加绑定 - 再次有点笨拙。CollectionChangedObjectListUpdateTarget

  3. 在我的INotifyPropertyChanged自定义控件PropertyChanged上实现并调用ObjectListCollectionChanged

我最喜欢 3,但事实上我有一个也实现 INPC 的 DependencyObject 似乎很奇怪。是吗?有没有更优雅的方法?