C# 我的ViewModel应该从DependencyObject继承吗?
好的,基本上我的目标是在代码中设置绑定,而不是使用XAML。 源属性是一个自定义的依赖项属性,它是一个字符串。目标属性位于ViewModel中,它也是一个字符串,但它不是依赖性属性(因为ViewModel当然不是DependencyObject) 因此,目标属性只是一个字符串属性(我们将此属性称为MyTextProperty) 这种绑定方法是通过XAML实现的(到目前为止只在x:bind中尝试过),但我似乎无法用纯C实现这一点 BindingOperations.SetBinding()希望目标是依赖属性,但MyTextProperty只是位于我的ViewModel中的一个简单字符串属性C# 我的ViewModel应该从DependencyObject继承吗?,c#,wpf,xaml,uwp,C#,Wpf,Xaml,Uwp,好的,基本上我的目标是在代码中设置绑定,而不是使用XAML。 源属性是一个自定义的依赖项属性,它是一个字符串。目标属性位于ViewModel中,它也是一个字符串,但它不是依赖性属性(因为ViewModel当然不是DependencyObject) 因此,目标属性只是一个字符串属性(我们将此属性称为MyTextProperty) 这种绑定方法是通过XAML实现的(到目前为止只在x:bind中尝试过),但我似乎无法用纯C实现这一点 BindingOperations.SetBinding()希望目标
我只是想知道是否有办法让这一切顺利进行。我的ViewModel是否需要是DependencyObject?虽然我从未尝试过,但如果是的话,它似乎会起作用。这种做法是否被视为一种良好的模式/做法?任何帮助都将不胜感激。谢谢。一个可能的解决方案是使用单向源或双向绑定创建绑定。通过这种方式,可以绑定到控件的DependencyProperty和viewmodel中的“normal”属性。一种可能的解决方案是使用单向ToSource或双向绑定创建绑定。这样就可以绑定到控件的DependencyProperty和viewmodel中的“normal”属性 我的ViewModel应该从DependencyObject继承吗 我的ViewModel是否需要是DependencyObject 否和否。它不应作为国家:
UserControl
,并在那里公开依赖项属性。您可以覆盖OnxxxPropertyChanged以让视图模型知道更改
使用这种方法,您的控件将以WPF设计的方式参与依赖项属性通信
考虑到您已经在考虑使用DependencyProperties,告诉我您有一个想要设置控件属性的异物,并且没有访问基础viewmodel的权限。DPs非常适合这样做
否则,如果我们只是简单地讨论视图背后的代码,那么您只需直接与视图模型对话,然后就可以使用它了
我的ViewModel应该从DependencyObject继承吗
我的ViewModel是否需要是DependencyObject
否和否。它不应作为国家:
UserControl
,并在那里公开依赖项属性。您可以覆盖OnxxxPropertyChanged以让视图模型知道更改
使用这种方法,您的控件将以WPF设计的方式参与依赖项属性通信
考虑到您已经在考虑使用DependencyProperties,告诉我您有一个想要设置控件属性的异物,并且没有访问基础viewmodel的权限。DPs非常适合这样做
否则,如果我们只是简单地讨论视图背后的代码,那么您只需直接与视图模型对话,然后就可以使用它了
BindingOperations.SetBinding()希望目标是依赖属性,但MyTextProperty只是位于我的ViewModel中的一个简单字符串属性
您误解了绑定目标和绑定源:预期的目标依赖项属性是visual XAML控件的属性(即Text
控件的TextBlock
属性)。视图模型属性MyTextProperty
是绑定的源
因此,不需要,视图模型不需要从DependencyObject
继承
下面介绍如何通过代码配置绑定
但是,这样做,您将不得不在视图模型中引用您的可视控件,这是一种糟糕的做法
BindingOperations.SetBinding()希望目标是依赖属性,但MyTextProperty只是位于我的ViewModel中的一个简单字符串属性
您误解了绑定目标和绑定源:预期的目标依赖项属性是visual XAML控件的属性(即Text
控件的TextBlock
属性)。视图模型属性MyTextProperty
是绑定的源
因此,不需要,视图模型不需要从DependencyObject
继承
下面介绍如何通过代码配置绑定
但是,这样做,您将不得不在视图模型中引用您的视觉控件,这是一种糟糕的做法。我想知道这一点。但它必须是用户控件吗?我对复杂的DependencyObject没有什么经验,但是创建一个类并让该类从DependencyObject继承,而不是创建一个完整的UserControl(我猜它包含一个毫无意义的.xaml文件),不是更简单吗?然后将属性放在该类中并从那里开始…@JonathanAcinity通常,如果您使用的是
DependencyObject
s,这意味着其他控件/窗口正在引用它,否则您只需与底层视图模型对话。创建UserControl
非常简单。顺便说一下,我不是说嵌入什么-