问题标签 [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 - 将文本框 IsFocused 绑定到 Popup IsOpen 以及附加条件
我有一个TextBox
和一个Popup
控制。我希望该Popup.IsOpen
属性绑定到该TextBox.IsFocused
属性。换句话说,如果文本框有焦点,则弹出窗口是打开的。或者,如果弹出窗口是焦点,我不希望它因为文本框失去焦点而关闭。我希望使用绑定来处理这个问题,而不是在事件处理程序中处理这个问题。此外,我是否必须对依赖属性做任何事情,因为它们是预先存在的(即注册、覆盖元数据等),或者我可以绑定到这些属性。
这是一些类似于我的场景的示例代码
从这里我假设如果我点击文本框控件并给它焦点,弹出窗口会打开,相反,如果文本框失去焦点,弹出窗口会关闭。我似乎无法让它工作。
如果有人知道我做错了什么,那么也许他们也可以回答我的问题的后半部分,即如果文本框失去焦点但弹出窗口获得焦点,则弹出窗口将保持打开状态或将焦点返回到文本框,以便它将在第一个绑定之前保持打开状态。当文本框失去焦点时获得焦点的任何其他控件都不适用于这种情况。
如果为了清楚起见我可以改写它,我会这样说。
1.)绑定Popup.IsOpen
到TextBox.IsFocused
2.)绑定TextBox.IsFocused
到Popup.IsFocused
(假设这只会让焦点回到文本框)
这是我的第一次 C# 尝试。有些事情还是不太对劲。什么都没有发生,所以我不太确定我的错误在哪里。
wpf - 依赖属性是如何实现的?
谁能解释依赖属性是如何实现的?它只是在基类中声明的静态字典,并以给定实例的引用作为键吗?我在互联网上找不到任何关于此的资源......
非常感谢
wpf - INotifyPropertyChanged 和 DependencyProperty 有什么关系?
我正在使用 DependencyProperties 构建一个简单的 UserControl 示例,以便可以在 XAML 中更改控件的属性(下面的代码)。
但当然,在我的应用程序中,我不希望此控件具有紧密耦合的代码隐藏,而是用户控件将是一个名为“DataTypeWholeNumberView”的视图,并且它将拥有自己的名为“DataTypeWholeNumberViewModel”的 ViewModel。
因此,我将在 ViewModel 中实现下面的 DependencyProperty 逻辑,但在 ViewModels 中,我通常继承 INotifyPropertyChanged,这似乎给了我相同的功能。
那么两者之间的关系是什么:
- 将 UserControl XAML 的 DataContext 绑定到其背后具有 DependencyProperties的代码
- 将 UserControl XAML(视图)的 DataContext 绑定到其ViewModel(继承自 INotifyPropertyChanged)并具有实现 INotifyPropertyChanged 功能的属性?
XAML:
代码背后:
wpf - What is the best way to not have DependencyProperties conflict with actual properties?
I find that when I make Dependency Properties, most of them conflict with names of properties in the UserControl, e.g Background, Width, etc. so my strategy is to prefix all of my custom properties with "The" so I have, e.g.
- TheBackground
- TheWidth
etc.
I tried using the "new" keyword which gets rid of the warning, but that leads to conflicts at runtime.
Has anyone come upon better naming strategies for DependencyProperties in custom user controls?
wpf - 如何从我的代码隐藏构造函数中访问 DependencyProperty 值?
我有一个名为SmartForm的 UserControl ,它有一个名为Status的 DependencyProperty 。
在我的 Window1.xaml 中,我有元素<local:SmartForm Status="Ready"/>
.
然后我会认为在 SmartForm 对象的构造函数中, Status 将等于 "Ready" 但它等于null。
那么为什么SmartForm 的构造函数中Status 属性的值为 NULL呢?
如果不在 UserControl 构造函数中,那么我什么时候可以访问 value呢?
Window1.xaml:
SmartForm.xaml:
SmartForm.xaml.cs:
wpf - DependencyProperty.Register() 或 .RegisterAttached()
两者有什么区别,什么时候应该使用RegisterAttached()而不是.Register()?
.net - WPF - 编译错误:模板部分不支持“PropertyArrayStart”类型的标签
通常我不会只在 SO 上发布错误消息,但在 Google 搜索后只找到一个点击,我想我至少会在 SO 上为这个错误打开地板。
我有一个名为typeSparkline
的依赖属性调用的自定义控件。这是我在 a 中使用它的示例:Values
unit[]
DataTemplate
此代码无法编译。我收到错误消息:
模板部分不支持“PropertyArrayStart”类型的标签。
行/列编号表示Values
属性的开始。
这真的把我扔了。在 Google 上搜索返回了一个结果,其中John_C遇到了完全相同的问题。不幸的是,他的解决方案涉及将控件移动到单独的组件中。好吧,我的已经在一个单独的程序集中了。我的猜测是还有别的东西在起作用。
我从来没有听说过PropertyArrayStart
。搜索仅返回与 XAML 序列化相关的几页。有趣的东西,但没有多大帮助。
想一想,我想不出框架中有任何具有数组类型的依赖属性。这是允许的吗?
我还尝试使用嵌套元素而不是Binding
.
......仍然没有运气。
欢迎任何想法!
wpf - WPF TextBlock 绑定到 DependencyProperty
我认为这是尝试将视图绑定到视图模型中的依赖属性的最简单案例之一。最初的更改似乎反映在视图中,但对 DP 的其他更改不会更新视图的 TextBlock。我可能只是错过了一些简单的东西,但我看不出它是什么。请看一下...
我的 XAML 在窗口底部有一个状态栏。我想绑定到 DP“VRAStatus”。
我的视图模型定义了 DP:
然后,在我的代码中,我设置了 DP:
这里有什么明显的我想念的吗?在视图模型的构造函数中,我将 DP 设置为:
我从来没有显示测试消息。
wpf - WPF - IsEnabled 绑定到 DependencyProperty 无法正常工作
我在我的窗口中定义了一个依赖属性,如下所示:
在我的窗口的构造函数中,我设置了持有按钮的容器的数据上下文:
我将依赖属性绑定到按钮的 IsEnabled 属性:
启动时 IsGenericUser 为 true,因此该按钮已启用。当我将 IsGenericUser 设置为 false 时,该按钮将被禁用。但是,如果我再次将 IsGenericUser 设为 true,则按钮不会发生任何事情,并且它仍然处于禁用状态。我究竟做错了什么?
谢谢!
编辑:这是我与按钮一起使用的样式。这种样式导致了问题(如果按钮没有自定义样式,它可以正常工作):
silverlight-3.0 - Silverlight 3 中的依赖属性和数据上下文
我正在使用 Silverlight 3 beta,但遇到了问题。我有一个页面,其中包含我在其上编写的用户控件。用户控件上有一个依赖属性。如果用户控件没有定义数据上下文(因此使用父级的数据上下文),一切正常。但如果用户控件有自己的数据上下文,则永远不会调用依赖属性的 OnPropertyChanged 方法。
这是一个示例:
我的主页:
主页代码:
主页的数据上下文:
控制 XAML:
控制代码:
控件的数据上下文:
要试用它,请在文本框中输入一些内容,然后点击“开始”按钮。注释掉控件代码中的数据上下文以查看它是否开始工作。
希望有人知道发生了什么。