Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何在ShellView中移动Caliburn Micro子视图?_Wpf_Mvvm_Caliburn.micro - Fatal编程技术网

Wpf 如何在ShellView中移动Caliburn Micro子视图?

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

我正在使用Caliburn Micro进行MVVM, 所以我可以打开视图,但不能移动它们

我已经设置了
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();
}