我必须在我的XAML文件中创建一个静态资源。
<Window.Resources>
<vm:ViewModel x:Key="viewModel" />
</Window.Resources>
我需要这个静态资源来获取我的组合框的项目
ItemsSource="{Binding Source={StaticResource viewModel}, Path=GetItems, Mode=TwoWay}"
但是我如何为ViewModel(构造函数)提供我的代码实例?
答案 0 :(得分:7)
如果我理解正确,那么你违反了MVVM模式。 您永远不应该将ComboBox中的项目提供给您的VM。您应该提供VM中的项目并将其绑定到Combobox,并且您在访问项目时没有问题。
答案 1 :(得分:2)
据我了解,您希望根据MVVM模式绑定视图和视图模型。
您不应该直接在视图中引用您的viewmodel,否则它们之间会有很强的耦合。根据MVVM模式,您应该通过DataContext
将它们耦合在一起在后面的代码中(例如在文件App.xaml.cs中)它看起来像
yourWindow.DataContext = yourViewModel
然后在 viewmodel 类中,您将拥有一个名为 GetItems 的属性
最后在您的窗口中,将列表框绑定到GetItems
ItemsSource="{Binding GetItems, Mode=TwoWay}"
答案 2 :(得分:0)
嗯,你可以从代码中做到这一点,我的意思是代码中的所有内容,或者你可以 使用ObjectDataProvider 尝试(取决于您的应用的设置方式)。
例如:
<ObjectDataProvider ObjectType="{x:Type ViewModel}" x:Key="viewModel">
<ObjectDataProvider.ConstructorParameters>
<StaticResource ResourceKey="dataProvider"/>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider >
在这种情况下,自然地,您传递给povoder的ctor的参数也必须是资源。