在Model-View-ViewModel体系结构WPF应用程序中实现ViewModel时,似乎有两个主要选择如何使其成为databindable.我已经看到了DependencyProperty
用于View将要绑定的属性的实现,我已经看到了实现的ViewModel INotifyPropertyChanged
.
我的问题是我应该何时优先选择其中一个?有任何性能差异吗?将ViewModel依赖项提供给WPF真的是个好主意吗?做出设计决定时还需要考虑什么?
什么是.Net中的依赖属性(特别是在WPF上下文中).常规财产有什么区别?
WPF中的(自定义)依赖项属性和附加属性之间有什么区别?每种用途有哪些用途?这些实现通常有何不同?
有没有办法听一个变化DependencyProperty
?我希望在值更改时收到通知并执行一些操作但我不能使用绑定.这是DependencyProperty
另一个班级.
如何创建只读依赖属性?这样做的最佳做法是什么?
具体来说,最让我感到困惑的是没有实施的事实
DependencyObject.GetValue()
Run Code Online (Sandbox Code Playgroud)
以a System.Windows.DependencyPropertyKey
为参数.
System.Windows.DependencyProperty.RegisterReadOnly
返回一个D ependencyPropertyKey
对象而不是一个DependencyProperty
.那么如果你不能对GetValue进行任何调用,你应该怎么访问你的只读依赖属性?或者你应该以某种方式将其DependencyPropertyKey
转换为普通的旧DependencyProperty
对象?
建议和/或代码将非常感谢!
在WPF中Binding.Mode
,选择默认值时,它取决于绑定的属性.
我正在寻找一些列表或一些约定或任何信息的各种控件的默认值.
我的意思是TwoWay
,默认情况下属性是什么等等.任何链接,想法,想法,甚至咆哮都很受欢迎!
我想这样做,默认情况下,当我绑定到我的一个依赖项属性时,绑定模式是双向的,并且update-trigger属性已更改.有没有办法做到这一点?
以下是我的一个依赖项属性的示例:
public static readonly DependencyProperty BindableSelectionLengthProperty =
DependencyProperty.Register(
"BindableSelectionLength",
typeof(int),
typeof(ModdedTextBox),
new PropertyMetadata(OnBindableSelectionLengthChanged));
Run Code Online (Sandbox Code Playgroud) 我问这个的原因是因为我被@Greg D(来自这个问题)的推荐用来SetCurrentValue()
代替,但看看文档并没有看到差异.或者什么"不改变其价值来源"意味着什么呢?
设置依赖项属性的本地值,由其依赖项属性标识符指定.
设置依赖项属性的值而不更改其值源.
从基于的自定义控件TextBox
,我Items
以这种方式创建了一个名为的属性:
public class NewTextBox : TextBox
{
public ItemCollection Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在XAML中使用自定义控件时,我无法绑定属性,因为它引发异常"A'Binding'只能在DependencyObject的DependencyProperty上设置."
我该如何解决这个例外?
wpf ×8
.net ×5
c# ×3
binding ×2
data-binding ×2
architecture ×1
binding-mode ×1
events ×1
mvvm ×1
setvalue ×1
silverlight ×1