我使用VS2010的XAML编辑器而没有使用Expression Blend。除了这个问题,我越来越需要设计时间数据绑定。对于简单情况,FallbackValue
属性非常好用(如文本框和文本块等)。但是,特别是在处理ItemsControl
等组件时,需要在设计器中显示样本数据,以便您可以调整和调试控件和数据模板而无需运行可执行文件。
我知道ObjectDataProvider
允许绑定到类型,因此可以提供可视化的设计时间数据,但是需要一些操作才能使实际的运行时数据绑定而不会浪费资源,同时加载设计时间虚假数据和运行时绑定。
实际上,我想要的是,在我的ItemsControl
中,例如“John”、“Paul”、“George”和“Ringo”出现为可样式化项目,并在应用程序运行时显示真实数据。
我也知道Blend允许使用一些定义设计期绑定数据的花哨属性,在运行时条件下被WPF忽略。
所以我的问题是:
1. 我如何利用Visual Studio XAML设计器中的集合和非平凡数据的设计时间绑定,然后平稳过渡到运行时绑定?
2. 别人是如何解决设计时间与运行时数据问题的?在我这种情况下,很难同时使用相同的数据(就像数据库查询一样)。
3. 除了Expression Blend之外,是否有其他可用于集成数据的XAML设计工具?(我知道有一些替代品,但我特别想要一个可以使用并查看绑定样本数据等的工具。)
d:DataContext
时遇到问题,可以在这个问题中找到一些帮助:https://dev59.com/hGsy5IYBdhLWcg3w0RM5 - Martin Liversagexmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
和mc:Ignorable="d"
。请将其添加到文件中,并确保语法正确。 - Orion Edwards<Grid d:DataContext="{d:DesignInstance Type=ViewModels:MockXViewModel, IsDesignTimeCreatable=True}" ...>
这种方式。这样,模拟的 viewmodel 仅在设计器中创建,而不是在运行应用程序时创建。请注意,此方法要求您的模拟视图模型具有无参数的构造函数。但在上面给出的答案示例中也是如此。 - René