是否可以检测到d:DesignInstance

时间:2013-03-22 14:33:50

标签: c# wpf

我的数据对象中有一些AOP,这导致Designer在创建对象时失败。是否可以从设计器检测到正在创建对象,以便我可以中止AOP程序?

最好是在AOP类中(在lib中,甚至不知道WPF是否参与。)也许通过查看workdir(如果通过设计者不同)或类似的东西?

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
mc:Ignorable="d" 
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type={x:Type ui:DesignData}}"

class DesignData
{
    public DesignData()
    {
        Func<int, ObservableCollection<Food>> createFoods = i =>
            {
                var r = new ObservableCollection<Food>();
                for (int j = 0; j < 10; j++)
                {
                    r.Add(new Food("Food #"+j+" for profile #"+i));
                }
                return r;
            };

        Profiles = new ObservableCollection<Profile>();
        for (int i = 0; i < 20; i++)
        {
            //Crashes because of AOP start-up procedure
            Profiles.Add(new Profile { Name = "ProfileName" + i, Foods = createFoods(i) });
        }
    }

    public ObservableCollection<Profile> Profiles { get; set; }
}

如果答案是否定的,那么什么是合适的选择?我唯一能想到的就是创建一个全新的数据对象,它具有与真实数据对象相同的属性,但这会令人非常烦人。

0 个答案:

没有答案
相关问题