我正在建造一个驾驶舱,我有很多用户控制(不同类型的开关),我试图将它们集成到一个窗口中
我正在使用 caliburn 和 Ninject 并尝试保留 MVVM。
所以我有一个问题,我必须将不同的开关动态集成到窗口的网格中,我不知道我是否可以保留 MVVM
所以在我的解决方案中,我使用网格的名称将不同的用户控件放置在不同的位置,并且我打破了 MVVM
我怎么能用 MVVM 做到这一点?我读过我可以使用 ContentControl 从列表中绑定不同的 ViewModel,但我不知道该怎么做。欢迎提供帮助
引导程序.cs:
using Caliburn.Micro;
using Ninject;
using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Input;
using TestNinjectCaliburn.ViewModels;
using EventAggregator = TestNinjectCaliburn.Events.EventAggregator;
using IEventAggregator = TestNinjectCaliburn.Events.IEventAggregator;
namespace TestNinjectCaliburn
{
public class Bootstrapper : BootstrapperBase
{
private IKernel kernel;
public Bootstrapper()
{
Initialize();
}
protected override void Configure()
{
kernel = new StandardKernel();
kernel.Bind<IEventAggregator>().To<EventAggregator>().InSingletonScope();
kernel.Bind<IWindowManager>().To<WindowManager>().InSingletonScope();
kernel.Bind<MainWindowViewModel>().ToSelf().InSingletonScope();
MessageBinder.SpecialValues.Add("$pressedkey", (context) =>
{
// NOTE: IMPORTANT - you MUST add the dictionary key as lowercase as CM
// does a ToLower on the param string you add in the action message, in fact ideally
// all your param messages should be lowercase just in case. I don't really like this
// behaviour but that's how it is!
var keyArgs = context.EventArgs as KeyEventArgs;
if (keyArgs != null)
return keyArgs.Key;
return null;
});
}
杨魅力
相关分类