经过几年的中断,刚刚开始使用 MVVM light 的新项目。我正在使用 ViewModelLocator 连接我的第一个 VM,我发现对于每个新视图模型,我们都需要创建一个新属性。我只是想知道如何避免这种情况,因为该应用程序最终可能会有很多视图模型(50+)。我已经使用值转换器让它工作,但后来我在 XAML 编辑器中失去了智能。
感谢那些可能对此有解决方案的人的任何示例。
注意 - 这是一个使用值转换器的解决方案,因此我可以将参数传递到一些 IoC 并获取 VM,但随后我失去了智能感知(WelcomeTitle 获取曲线)。
<Window x:Class="My.MainWindow"
DataContext="{Binding Source={StaticResource Locator},
Converter={StaticResource Locator}, ConverterParameter='foo'}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid x:Name="LayoutRoot">
<TextBlock FontSize="36"
FontWeight="Bold"
Foreground="Purple"
Text="{Binding WelcomeTitle}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
TextWrapping="Wrap" />
</Grid>
</Window>
更新:这是另一种方法,比使用转换器更好,但仍然受到 WelcomeTitle 曲线的影响,因为 XAML 编辑器不知道类型。我想知道这是否会影响“可混合性”?(我手边没有混合。)
http://maartendewilde.blogspot.com/2011/01/auto-viewmodel-binding-with-ninject.html
谢谢