欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

WPF通过附加属性控制窗口关闭

程序员文章站 2024-02-06 20:58:58
场景1 当使用 ShowDialog() 方式显示窗口时,通过定义附加属性的方式可实现在 ViewModel 中进行数据绑定(bool?)来控制子窗口的显示和关闭 参考地址: "Getting “DialogResult can be set only after Window is created ......

场景1

当使用 showdialog() 方式显示窗口时,通过定义附加属性的方式可实现在 viewmodel 中进行数据绑定(bool?)来控制子窗口的显示和关闭

public class exwindow
{
    public static bool? getdialogresult(dependencyobject obj)
    {
        return (bool?)obj.getvalue(dialogresultproperty);
    }

    public static void setdialogresult(dependencyobject obj, bool value)
    {
        obj.setvalue(dialogresultproperty, value);
    }

    // using a dependencyproperty as the backing store for dialogresult.  this enables animation, styling, binding, etc...
    public static readonly dependencyproperty dialogresultproperty =
        dependencyproperty.registerattached("dialogresult", typeof(bool?), typeof(exwindow), new propertymetadata(true, (d, e) =>
        {
            var handler = d as window;
            handler.dialogresult = e.newvalue as bool?;
        }));
}

场景2

当主窗口的显示和关闭也想通过在 viewmodel 中来进行控制的话可以通过事件和消息级制来实现,具体可参考 mvvm light 中的 messenger 使用方式