带参数的静态资源构造函数

时间:2012-04-27 10:45:50

标签: c# wpf constructor staticresource

我必须在我的XAML文件中创建一个静态资源。

<Window.Resources>
    <vm:ViewModel x:Key="viewModel" />
</Window.Resources>

我需要这个静态资源来获取我的组合框的项目

ItemsSource="{Binding Source={StaticResource viewModel}, Path=GetItems, Mode=TwoWay}"

但是我如何为ViewModel(构造函数)提供我的代码实例?

3 个答案:

答案 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的参数也必须是资源。