2
A
回答
4
见my answer to your other question约自定义控件和视图模型。这里的简短版本:
- 自定义控件不应该有视图模型。
- 请勿设置您自己的控件的数据上下文。这是为消费者保留的。
- 所有的依赖项属性应该在MyCustomControl.cs文件中声明。
- 在你的genric.xaml中使用TemplateBinding,因为Binding更有效率。
换句话说,边界或按钮的视图模型是什么?答:他们没有一个,因为他们只是控件。 UserControls拥有视图模型,但控件只是呈现并与您给它们的数据交互(在UserControl中)。对于经验丰富的MVVM开发人员来说,自定义控件开发可能是最困难的事情:您的反应是制作视图模型,但这种反射不幸是错误的。我知道是因为我自己犯了这个错误。
1
依赖属性可能会在它们所属的控件中被拖动。
当在WPF/Silverlight中跟随MVVM时,常用的方法是将ViewModel设置为相应View的DataContext。因此,您可以使用XAML中的绑定将自定义的依赖属性链接到ViewModel属性。
让我们假设你已经设置ViewMosel到视图的DataContext:
var view = new UserView
{
DataContext = new UserViewModel { Name = "Custom Name" }
};
public class UserViewModel
{
string Name { get; set; }
}
UserView.xaml:
<TextBlock Text="{Binding Name}" />
0
创建自定义控件时,控件本身是视图模型。在其上声明依赖性属性以公开自定义控件的用户可以利用的绑定。例如,如果您有时间轴控件,则可能会将控件上的StartDate和EndDate等属性显示为依赖项属性。您的控件默认模板将使模板绑定到依赖项属性。然后,您的控件的使用者可能会拥有一个项目时间线视图模型,以便将其绑定到控件上的属性。
自定义控件的主要目的是提供易于覆盖的行为和默认外观(通过提供新模板)。希望这可以帮助。
相关问题
- 1. 自定义控件依赖属性绑定到属性
- 2. 用户控件与自定义类型依赖属性(Bound)
- 3. asp.net自定义控件属性依赖于另一个属性
- 4. 添加自定义依赖属性来控制模板在XAML
- 5. 将BoundingRectangle绑定到自定义控件依赖项属性
- 6. WPF自定义用户控件 - 依赖属性绑定
- 7. Silverlight绑定到自定义控件中的依赖属性
- 8. 自定义控件依赖项属性绑定
- 9. 绑定到自定义控件的嵌套依赖项属性
- 10. 自定义依赖属性绑定
- 11. 自定义依赖属性绑定
- 12. 将自定义控件上的新属性绑定到查看模型
- 13. 如何将自定义控件的依赖项属性绑定到其视图模型属性
- 14. WPF自定义控件依赖属性setter没有被调用?
- 15. 从WPF自定义控件依赖属性错误
- 16. WPF ::自定义控件的依赖项属性不起作用
- 17. WPF自定义控件的依赖项属性
- 18. Nativescript自定义控件 - 更新依赖项属性
- 19. WPF。设置自定义控件的依赖关系属性
- 20. WPF从FindAncestor到依赖项属性自定义控件的
- 21. 自定义用户控件的依赖属性
- 22. 查看模型和依赖注入
- 23. 获取自定义依赖属性
- 24. 查看模型,依赖项属性混淆
- 25. 双向数据绑定,Silverlight和自定义控件/依赖项属性
- 26. WPF自定义控件依赖属性:不能是字符串类型?
- 27. 自定义控件依赖项属性集合,统计嵌套控件项目
- 28. 结合自定义依赖属性的宽度的控制
- 29. WPF:MVVM创建自定义依赖属性的DevExpress控制
- 30. 自定义组件依赖性地狱
加1,这应该是正确的答案 –