带参数的静态资源构造(Static resource constructor with parame

2019-09-16 19:38发布

我在我的XAML文件中的静态资源来创建。

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

我需要这个静态资源获得的物品为我的组合框

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

但我怎么可以给视图模型(构造)的隐藏类我的代码实例?

Answer 1:

如果我理解正确的这个,你违反了MVVM模式。 你不应该提供从ComboBox项目到您的虚拟机。 你还是从你的VM提供的项目,并将其绑定到ComboBox,和你没有访问项目的问题。



Answer 2:

据我了解,你要绑定您的视图,并根据MVVM模式视图模型。

你不应该直接引用您的视图模型在您的视图,否则你有他们之间的强耦合。 据MVVM模式,你应该在DataContext他们夫妇

在后面的代码(例如在文件App.xaml.cs),它看起来像

yourWindow.DataContext = yourViewModel

然后在您的视图模型类,你将有一个属性命名GetItems

最后,在你的窗口中,您绑定您的列表框中GetItems

ItemsSource="{Binding GetItems, Mode=TwoWay}"


Answer 3:

那么,你可以从代码做到这一点,我的意思是一切从代码,或者你可以尝试 (取决于您的应用程序如何architcted),通过使用ObjectDataProvider的 。

例如:

<ObjectDataProvider ObjectType="{x:Type ViewModel}"  x:Key="viewModel">
      <ObjectDataProvider.ConstructorParameters>
                <StaticResource ResourceKey="dataProvider"/>
       </ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider >

在这种情况下,自然地,你传递给povoder的构造函数参数,必须是资源太。



文章来源: Static resource constructor with parameters