问题标签 [dependency-properties]
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.
wpf - WPF/Silverlight 依赖属性的延迟“渲染”?
有没有办法知道第一次通过 XAML 绑定访问依赖属性,以便我可以在需要时实际“呈现”属性的值?
我有一个对象(从 Control 派生的类),它有几个 PointCollection 依赖属性,可能包含 100 个或 1000 个点。每个属性可能会以不同的方式排列点以用于不同类型的形状(折线、多边形等 - 它比这个更复杂,但你明白了)。通过模板,不同的 XAML 对象使用 TemplateBinding 来访问这些属性。由于我的对象使用模板,我永远不知道我的对象可能正在使用哪些 XAML 形状 - 所以我永远不知道它们可能绑定或不绑定到哪些属性。我只想在实际需要时填写这些 PointCollections。
通常在 .NET 中,我会在属性的 getter 中添加一些逻辑,但这些被 XAML 数据绑定绕过。
我需要一个 WPF 和 Silverlight 兼容的解决方案。
我希望有一个解决方案可以避免我的对象的用户带来任何额外的复杂性。
更新
我发现这样做的一种方法是使用Value Converters。在我的情况下,我有多个积分集合。有一个主要部门。包含数据通常形状的属性。在其他领域/环境中重复使用需要两个替代形状。
起初我有3个部门。道具。但是,我可以只拥有一个属性(通常的形状)并使用转换后的值将点转换为我想要的其他 2 个形状。这样做我只在控件中制作一组点。仅在使用时才会产生将点转换为次要形状的费用。现在我的主控件不需要预测数据需要如何查找控件中的每个可能的模板 - 现在是模板设计者的问题。
更新 2
当然 INotifyPropertyChanged 和常规属性是处理此问题的推荐方法。
c# - 如何扩展此依赖属性示例以重新创建类似 DockPanel.Dock="Top" 的依赖属性?
我试图更好地理解什么是依赖属性,什么不是。我已经构建了下面的示例,它使组合框的选择可以根据用户移动滑块的方式进行更改。
在创建它时,我了解到依赖属性实际上与 ViewModel 属性中使用的INotifyPropertyChanged无关,这简化了下面的示例。
但是现在我将如何从下面的示例中重新创建中看到的那种依赖属性DockPanel.Dock="Top"
,例如,我可以启用以下类型的 XAML 使用:
这可能吗?这是否与下面更直接的示例中使用的依赖属性相同,还是像 INotifyPropertyChanged 一样,是 WPF 中的另一种绑定技术?
这是滑块/组合框示例:
XAML:
代码隐藏:
c# - 我已经创建了一个附加属性,现在我该如何使用它?
我正在尝试确定附加行为是否是我们在为应用程序中的表单构建控件时需要的东西。
因此,我不仅想知道如何创建附加行为,还想查看它们用于解决问题的真实实例。我使用这篇 MSDN 文章以我认为有用的方式创建了一个带有附加属性的 UserControl,即一个堆栈面板,其中某些子元素要么突出显示,要么不突出显示。
这个例子运行良好,但是我在哪里放置逻辑来突出或不突出子元素的突出显示(例如更改背景颜色) ?
XAML:
代码背后:
silverlight - Silverlight:标签不评估自定义 DependencyProperty 的绑定
我有一个 Silverlight 3 标签,我使用标签的 Target 属性连接到一个 ComboBox。根据 MSDN,Label 类遍历目标绑定并在源中搜索元数据以确定标签的内容。
只要目标是标准控件,这实际上就可以工作。但是,如果我使用自定义控件,在我的例子中扩展了 ComboBox,并引入了一个新的 DependencyProperty,它就会被忽略。
例如,这有效:
在上面的示例中,搜索了 SelectedItem 绑定,并且 DataModel.Country 确实包含所采用的 DisplayName。
但这不会:
自定义属性是依赖属性并声明如下:
我知道我可以通过在标签上定义 PropertyPath 来解决这个问题,但如果可能的话,我宁愿避免这种情况。
所以我现在的问题是,任何人都可以重现这个问题,当然更重要的是,有人知道如何解决它吗?:-)
谢谢,马库斯
wpf - 无法对 DependencyProperty 进行数据绑定
我有一个带有 DependencyProperty 的 UserControl。我使用数据绑定表达式在主机窗口中设置它的值。但是,它没有按预期工作。
来自用户控件的代码隐藏片段:
并且来自 XAML(注意:CasingListView 继承自 ViewBase):
发生的事没什么。具体来说,setter 永远不会被调用,并且该属性保持为空。我知道源属性CasingListViewModel
有一个值,因为我试图将它绑定到另一个属性(DataContext),它工作正常。
我认为依赖属性可以是数据绑定的。我错了吗?
wpf - WPF - 设计一个无外观的控件:如何从第二级 ControlTemplates 访问控件的依赖属性?
我正在扩展ItemsControl
( class EnhancedItemsControl : ItemsControl
),因为我想向它添加几个依赖属性 - 比如AlternativeContent
当集合中没有项目时将显示这些属性(考虑在 itemscontrol 中为搜索结果输入“输入搜索词并点击搜索”标签)。
我已经子类化ItemsControl
并添加了一个AlternativeContent
dep。类型的属性FrameworkElement
。现在我想在 Themes/Generic.xaml 中提供默认样式(我已添加ThemeInfoAttribute
到 AsseblyInfo,并在静态 costructor 中提供了元数据,如本优秀教程中所述)。
样式包含. ControlTemplate
_ _ControlTemplate
ContentPresenter
AlternativeContent
现在,我的问题是如何告诉ContentPresenter
它应该从顶层获取其内容EnhancedItemsControl
?如果我在 style's 内部ControlTemplate
,我会使用:
但是由于我在ItemsControl
's ControlTemplate
inside style'sControlTemplate
中,这显然不起作用,我需要引用的不是父模板,而是祖父模板,但是TemplateBinding
没有AncestorLevel
参数。
我也试过:
但这也会导致空ContentPresenter
。我不能命名TemplatedParent
(因为它在 之外ControlTemplate
),所以我不能通过名称来引用它。我不能使用TemplatedParent
RelativeBinding
,因为它没有达到超过两个级别的控制模板。RelativeSource
FindAncestor
奇怪的是不起作用。
知道如何解决这个问题吗?谢谢!
Generic.xaml(摘录):
控制代码:
用法(aList<string>
提供为DataContext
):
wpf - 依赖属性不起作用,尝试通过样式设置器进行设置
我正在尝试为我新制作的用户控件设置自定义样式,但是我收到错误消息:“无法将属性 'Property' 中的值转换为 'System.Windows.DependencyProperty' 类型的对象。”
我以为我已经设置了依赖属性,但似乎情况并非如此,所以我做了一些研究并补充说:
要做到这一点: -- MyButton.Xaml.Cs --
不幸的是,这不起作用。我也试过这个:
但这不起作用,并且图像没有显示并产生与前面提到的相同的错误。
有任何想法吗?问候科汉。
-- MyButton.Xaml --
-- MYButton 样式 --
wpf - 绑定到 UserControl 的 DependencyProperty
我正在尝试从http://msdn.microsoft.com/en-us/magazine/dd882520.aspx为 WPF 工具包的日历调整一个解决方案,但我在让用户控件上的绑定工作时遇到问题。我试过使用 FindAncestor 和 ElementName,但我只是得到一个绑定错误。
我认为它可能与工具提示有关,它是日历中的 DataContext。有没有其他人有这个问题?
错误是:
以及 DependencyProperty 的声明:
我有另一个控件发生同样的事情,所以我想我可能会遗漏一些东西。
wpf - 如何在 WinDbg 中查看 DependencyProperty 的值?
使用 WinDbg 并尝试调试 Silverlight 应用程序的内存泄漏,我遇到了作为 DependencyProperty 实现的对象的属性 - 当我将对象转储到调试器 (WinDbg) 中时,我可以看到该属性 - 也就是说,我可以查看实际的静态字段。
如何查看房产的实际价值?
wpf - 无法识别 WPF 依赖项属性
我试图克服一个不允许我绑定到常规 clr 属性的限制。
我使用的解决方案使用自定义依赖属性,这些属性反过来会更改 clr 属性。
这是代码
但是当我尝试将某些东西绑定到 BoundSelectionStart 时,它说它说我只能绑定到 DP。
问题是什么?