问题标签 [blendability]
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 - 定义嵌套视图的标准约定是什么:MVVM Light 中的视图模型映射
所以在经典的 MVVM 示例中,我看到 DataTemplate 定义用于将视图模型映射到视图,在 MVVM Light 框架中执行此操作的标准方法是什么,映射应该位于哪里?以下是我现在正在做的事情和我正在谈论的例子,可混合性对我来说很重要!
主窗口:
在上面的代码中,我的 RootViewModel 类有一个具有相同属性名称的 ApplicationManagementViewModel 类的实例:
我引用 ResourceDictionary“ViewMappings.xaml”来指定我的视图模型如何表示为视图。
我应该使用 ViewModelLocator 做这样的事情吗?视图模型的集合呢?
silverlight - 在我的 ViewModel 中使用 DataServiceCollection 时如何实现“可混合性”
我正在考虑在我的 Silverlight 客户端中使用 oData 端点。自然地,我在做 MVVM,我希望项目是好的和“可混合的”(即,在设计模式下,我必须能够干净地使用静态数据而不是 oData 端点。)
现在来解决问题。我想在我的 ViewModel 中使用 DataServiceCollection,因为它允许很好的可绑定集合,而不必担心 BeginExecute/EndExecute 等。
现在,让我们看一些代码。我的模型界面如下所示:
该接口的 oData 端点实现:
以及“可混合”设计时实现:
但是,当我尝试在 ViewModel 构造函数中使用最后一个时:
我得到一个例外:
在 DataServiceCollection 上调用 LoadAsync 方法时,只能提供类型化的 DataServiceQuery 对象。
首先,如果是这样的话,为什么不把LoadAsync的入参写成DataServiceQuery呢?
其次,做我想要完成的事情的“正确”方式是什么?
wpf - 与 d:DataContext 的可混合性。我错过了什么?
我觉得我仍然看到很多指导和建议,说明视图优先方法是在您的应用程序中获得可混合性的最佳方式。但是,使用 d:DataContext、d:DesignData 和 d:DesignInstance,无论您的视图和视图模型如何连接在一起,Blendability 的问题都不是很容易解决吗?
使用 DesignInstance,您只需选择要在设计器中使用的具体 ViewModel 类型,就好像您拥有视图优先组合。事实上,使用 DesignInstance 实际上可以更好地分离关注点,而不是使用 IsInDesignMode 后空翻或创建一个默认构造函数只是为了在您的真实视图模型中提供设计支持——您可以从您的视图模型类型或通用接口类型继承来创建一个简单的“设计器” viewmodel,它完全受限于设计者。使用 DesignData,您甚至不必这样做:您只需在 XAML 中以声明方式创建一个假视图模型。
诚然,进行上述活动的前期成本很小,但结果实际上是比通过将设计数据与真实视图模型混合获得的结果更清晰的分离。有什么我想念的吗?为什么可混合性仍然是一个大问题?
silverlight - app.xaml 中定义的 Silverlight ViewModelLocator 需要对 DI 容器的引用
我在 app.xaml 中定义了一个 ViewModelLocator 类,我的视图使用它来将数据绑定到正确的 ViewModel。
我正在使用 Prism 和 Unity,而我的 ViewModelLocator 类需要对应用程序级统一容器的引用。
我想将 IUnityContainer 注入 ViewModelLocator 的 ctor,但 ViewModelLocator 使用无参数 ctor 从 app.xaml 实例化。
是否有一种首选的方式来访问应用程序级容器 - 对于应用程序中的所有其他类,我只使用 ctor 注入来获取全局容器。
我现在为 ViewModelLocator 做的是在我的 BootStrapper 类中定义一个静态变量来存储容器。我通过覆盖 UnityBootStrapper 上的 CreateContainer 方法来创建容器。
然后在ViewModelLocator类中,我只引用 BootStrapper.DIContainer 属性来注册我的视图模型
这工作正常,但它是应用程序中唯一需要在引导程序上引用此静态属性的地方 - 并且如果可能的话希望摆脱它。
谢谢迈克尔
sql-server-ce - 谁能想到为什么在设计时数据源中使用这个特定的类会破坏所有设计时绑定?
我使用 SQLMetal.exe 生成了这个类。它在运行时是非常可绑定的,但是如果我在设计时使用这个类,我所有的设计时混合绑定都会被破坏。
我正在使用 MVVM-Light 框架,并且正在为 WP7 构建应用程序。
如果我为这个类提取一个接口,并创建一个实现这个接口的简单 POCO,并在我的设计时数据源中使用我的简单 poco,那么所有绑定都会生效。
这是由 SQLMetal.exe 生成的类。
wpf - 使用 Wpf RelativeSource 绑定会破坏可混合性
我有以下场景......我有一个包含 ItemsControl 的窗口。我为 Window 的 DataContext 指定了一个 ViewModel。我为 ItemControl 的 ItemTemplate 指定了一个 DataTemplate。在 DataTemplate 中,我使用 ComboBox,对于 ComboBox 的 ItemsSource,我使用 RelativeSource 绑定到其包含的 Window 的 DataContext。在运行时一切正常并且绑定被正确解析,但在设计时苹果酒无法获取 ItemSource 绑定到的包含窗口的 ViewModel。
这是我的代码(我在顶部省略了 xml 命名空间声明,但在我的代码中它们包含在内):
所以基本上从上面的代码中 Path=DataContext.AvailableGenres 在设计时无法解析,但在运行时它被正确解析。
有谁知道我做错了什么,或者是 Wpf xaml 解析器的问题,它在设计时无法解析到 RelativeSources 的绑定?
wpf - 是什么让 Visual Studio 的设计师参与设计时支持
我有 ac# 控件库,其中包含我的模型、视图模型和视图。我像往常一样把所有东西都连接起来,但我没有从 Visual Studio 的设计师那里得到任何设计时反馈(可混合性)。
当我在 WPF 项目中加载我的组件并将视图包含为自定义用户控件时,我将获得我的设计时反馈。不幸的是,这个 WPF 项目只是一个测试外壳,因为视图将存在于另一个应用程序中。
如果我可以在我的类库中支持可混合性(设计时),那么我的开发管道会更有效吗?是什么让 Visual Studio 开始显示我的设计时数据上下文?
我什d:DataContext="{d:DesignInstance dd:DesignViewModel}"
至在我的类库中使用。类库中没有设计时数据。
wpf - WPF 设计时数据混乱
为什么当我为我的 MVVM 视图创建一些设计时数据时,我必须嵌套 xmlns 两次才能访问该属性的属性?
例子:
我已经在 UserControl 的 xmlns 中定义了一个本地属性。但是要访问底层类中的 User 结构,我必须在 Users 属性中再次定义它。
这是为什么?
所有这一切都很好......我可以看到我的运行时数据非常棒。我以前从来没有这样做过,所以能够看到它很整洁。我注意到当我编译时我经常得到错误消失......但每当我更改 xaml 时都会再次出现。
显然它有效,否则我将无法看到运行时数据。
我还想将此设计时数据提取到另一个 xaml 类中,并在此类中引用它,因此我没有位于视图本身内的实际设计时数据……只是对另一个 xaml 文件的引用。
所以我这样做了......就像这样......
但是,当我摆脱代码隐藏时,我得到了上面提到的相同错误(在构建中消失),但还有一个错误说
与其他错误不同,这不允许我构建。为什么是这样?我如何解决它?我仍然习惯这种设计时数据的东西。
sql-server-ce - 如何在 wp7 芒果上使用 linq2sql 数据库,同时保持可混合性?
我正在尝试使用 MVVM Light 和 SQL Server CE 作为数据库来创建一个 WP7 应用程序。为此,我使用 sqlmetal.exe (1) 生成了一个数据上下文。
如果我在手机上运行该应用程序,这可以正常工作。但是当试图显示设计时数据时,我无法DataContext
在我的设计时代码中创建一个实例。这可以做到吗?我尝试的另一种方法是创建一个实例Table<MyDataObject>
,但 System.Data.Linq.Table 没有构造函数。
所以我的问题是,是否有可能以某种方式DataContext
从代码创建我的实例,或者是否有另一种方法可以在不丢失设计时数据的情况下与我的数据库交互。
(1) 实际上,我使用了一种不同的方法,使用库项目能够直观地设计并将设计器文件复制到我的 WP7 项目中。如果我是正确的,结果是一样的。
c# - 在设计模式下尝试连接到 sqlite 时失去与 mvvm light 的可混合性
在完成一个个人项目后,我一直在愉快地编码,当我注意到我失去了与我的视图模型上的 mvvm light 框架的可混合性时。
试图找出原因,我开始深入研究我的构造函数,用神秘的语言添加、删除和诅咒,直到我想出下一点:
我的一个视图模型(如果处于设计模式)试图调用一个静态类,我用它来生成随机数据(使测试某些东西变得容易)。
现在,一种特定的方法是调用 Sqlite 数据库来获取一系列值,然后从中选择一个随机值。
这对运行时的应用程序非常有用,但在设计时,它只会破坏某些东西,并导致可混合性消失。
作为一种解决方法,我现在从位于我的“if (InDesignMode)”子句中的硬编码值数组中获取该随机值,但我想知道是否有人知道为什么会发生这种情况,以及是否有解决方法。
干杯,并提前感谢:)