0

私はMVVMにCaliburn Microを使用しているので、OpenViewsはできますが、Moveできません。

私は設定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}
    });
}

助けてください。

4

1 に答える 1

0

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();
}
于 2012-05-11T06:29:16.580 に答える