Wpf 如何在ShellView中移动Caliburn Micro子视图?
我正在使用Caliburn Micro进行MVVM, 所以我可以打开视图,但不能移动它们 我已经设置了Wpf 如何在ShellView中移动Caliburn Micro子视图?,wpf,mvvm,caliburn.micro,Wpf,Mvvm,Caliburn.micro,我正在使用Caliburn Micro进行MVVM, 所以我可以打开视图,但不能移动它们 我已经设置了WindowStyle=None,这是我的代码 private void OpenView(object ViewModel) { windowManager.ShowWindow(ViewModel, settings: new Dictionary<string, object> { {"Background",Brushes.Transp
WindowStyle=None
,这是我的代码
private void OpenView(object ViewModel)
{
windowManager.ShowWindow(ViewModel,
settings: new Dictionary<string, object>
{
{"Background",Brushes.Transparent},
{ "WindowStyle", WindowStyle.None},
{ "ShowInTaskbar", false},
{"AllowsTransparency",true}
});
}
private void OpenView(对象视图模型)
{
windowManager.ShowWindow(视图模型,
设置:新字典
{
{“背景”,画笔.透明},
{“WindowStyle”,WindowStyle.None},
{“ShowInTaskbar”,false},
{“allowsttransparency”,true}
});
}
请提供帮助。从Caliburn Micro的WindowManager.cs中删除CreateWindow并添加此代码
protected virtual Window CreateWindow(object rootModel, bool isDialog, object context, IDictionary<string, object> settings) {
var view = EnsureWindow(rootModel, ViewLocator.LocateForModel(rootModel, null, context), isDialog);
ViewModelBinder.Bind(rootModel, view, context);
var haveDisplayName = rootModel as IHaveDisplayName;
if (haveDisplayName != null && !ConventionManager.HasBinding(view, Window.TitleProperty)) {
var binding = new Binding("DisplayName") { Mode = BindingMode.TwoWay };
view.SetBinding(Window.TitleProperty, binding);
}
view.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(Window_MouseDown);
ApplySettings(view, settings);
new WindowConductor(rootModel, view);
return view;
}
void Window_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
var view = sender as Window;
view.DragMove();
}
受保护的虚拟窗口CreateWindow(对象根模型、bool isDialog、对象上下文、IDictionary设置){
var view=EnsureWindow(rootModel,ViewLocator.LocateForModel(rootModel,null,context),isDialog);
Bind(根模型、视图、上下文);
var haveDisplayName=rootModel作为IHaveDisplayName;
if(haveDisplayName!=null&&!ConventionManager.HasBinding(视图、窗口、标题属性)){
var binding=new binding(“DisplayName”){Mode=BindingMode.TwoWay};
视图.设置绑定(Window.TitleProperty,绑定);
}
view.MouseLeftButtonDown+=新系统.Windows.Input.MouseButtonEventHandler(Window\u MouseDown);
应用程序设置(视图、设置);
新WindowConductor(根模型、视图);
返回视图;
}
void Window_MouseDown(对象发送器,System.Windows.Input.MouseButtonEventArgs e)
{
var view=发送方作为窗口;
view.DragMove();
}