我在我的XAML文件中的静态资源来创建。
<Window.Resources>
<vm:ViewModel x:Key="viewModel" />
</Window.Resources>
我需要这个静态资源获得的物品为我的组合框
ItemsSource="{Binding Source={StaticResource viewModel}, Path=GetItems, Mode=TwoWay}"
但我怎么可以给视图模型(构造)的隐藏类我的代码实例?
我在我的XAML文件中的静态资源来创建。
<Window.Resources>
<vm:ViewModel x:Key="viewModel" />
</Window.Resources>
我需要这个静态资源获得的物品为我的组合框
ItemsSource="{Binding Source={StaticResource viewModel}, Path=GetItems, Mode=TwoWay}"
但我怎么可以给视图模型(构造)的隐藏类我的代码实例?
如果我理解正确的这个,你违反了MVVM模式。 你不应该提供从ComboBox项目到您的虚拟机。 你还是从你的VM提供的项目,并将其绑定到ComboBox,和你没有访问项目的问题。
据我了解,你要绑定您的视图,并根据MVVM模式视图模型。
你不应该直接引用您的视图模型在您的视图,否则你有他们之间的强耦合。 据MVVM模式,你应该在DataContext他们夫妇
在后面的代码(例如在文件App.xaml.cs),它看起来像
yourWindow.DataContext = yourViewModel
然后在您的视图模型类,你将有一个属性命名GetItems
最后,在你的窗口中,您绑定您的列表框中GetItems
ItemsSource="{Binding GetItems, Mode=TwoWay}"
那么,你可以从代码做到这一点,我的意思是一切从代码,或者你可以尝试 (取决于您的应用程序如何architcted),通过使用ObjectDataProvider的 。
例如:
<ObjectDataProvider ObjectType="{x:Type ViewModel}" x:Key="viewModel">
<ObjectDataProvider.ConstructorParameters>
<StaticResource ResourceKey="dataProvider"/>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider >
在这种情况下,自然地,你传递给povoder的构造函数参数,必须是资源太。