为什么应用程序仍在运行?

时间:2017-05-18 14:19:45

标签: c# wpf attachedbehaviors

我有一个有for的应用程序,但如果我关闭循环内的窗口,循环将继续到关闭应用程序之前的最后一项。代码是这样的:

这是我的ViewModel中的代码:

private bool _estaCerrada = false;
public bool EstaCerrada
{
    get { return _estaCerrada; }
    set
    {
        _estaCerrada = value;
        RaisePropertyChangedEvent("EstaCerrada");
    }
}


for(int i = 0; i< 2; i++)
{
    EstaCerrada = true;
}

这是我的观点:

<Window x:Class="MiAplicaion.Login"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Behaviors="clr-namespace:miAplicacion.Behaviors"
        Name="ucPrincipal"
        Behaviors:WindowCloseBehavior.IsClose="{Binding EstaCerrada}">

这是我的附属属性,允许我从ViewModel关闭窗口:

using System.Windows;
using System.Windows.Interactivity;


namespace GTS.CMMS.Client.Behaviors
{
    public class WindowCloseBehavior
    {
        public static readonly DependencyProperty IsCloseProperty =
            DependencyProperty.RegisterAttached
            (
                "IsClose",
                typeof(bool),
                typeof(WindowCloseBehavior),
                new UIPropertyMetadata(false, OnIsClosePropertyChanged)
            );


        public static bool GetIsClose(DependencyObject obj)
        {
            return (bool)obj.GetValue(IsCloseProperty);
        }
        public static void SetIsClose(DependencyObject obj, bool value)
        {
            obj.SetValue(IsCloseProperty, value);
        }

        private static void OnIsClosePropertyChanged(DependencyObject dpo, DependencyPropertyChangedEventArgs args)
        {
            if(miVentana != null)
            {
                if((bool)args.NewValue)
                {
                    miVentana.DataContext = null;
                    miVentana.Close();
                }//((bool)args.NewValue)
            }//(miVentana != null)
        }//OnIsClosePropertyChanged
    }//class WindowCloseBehavior
}

当我将属性EstaCerrada设置为true时,代码以我可以从ViewModel关闭窗口和应用程序的方式工作。

我的问题是我不知道为什么在循环中,当应用程序在第一次迭代中应该关闭时,它必须迭代2次。

我可以解决在将EstaCerada设置为true后添加中断的问题,但我想知道为什么当我关闭窗口时应用程序仍在工作,并且我设置为使视图的DataContext为空。

感谢。

0 个答案:

没有答案