Итак, в вашей ViewModel вы проверяете, верно ли это, а затем возвращаете ложные данные из свойства виртуальной машины, например ObservableCollection? Проблема, которую я мог видеть, заключалась в подключении ViewModel и View, поскольку я использую MEF и Prism. Я посмотрю на то, как вы сказали подключить vs2010 и смешать, тогда, возможно, я смогу заставить это работать. Благодарю.

льзуя vs2010 и смесь выражения v4]

Привет - пытаясь загрузить некоторые данные времени разработки в WPF и Blend, используя концепцию Джоша Смита здесь:http://joshsmithonwpf.wordpress.com/2010/04/07/assembly-level-initialization-at-design-time/ например

[AttributeUsage(AttributeTargets.Assembly)]
public class DesignTimeBootstrapperAttribute : Attribute
{
    public DesignTimeBootstrapperAttribute(Type type)
    {
        var dep = new DependencyObject();
        Debug.WriteLine("here..?");
        if (DesignerProperties.GetIsInDesignMode(dep))
        {
            // TODO: Design-time initialization…
            IBootstrapper instance = Activator.CreateInstance(type) as IBootstrapper;
            if (instance != null)
            {
                instance.Run();
            }
        }
    }
}

С моим атрибутом здесь в AssemblyInfo.cs, где AppBootstrapper расширяет MefBootstrapper.

[assembly: AssemblyCopyright("Copyright ©  2010")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: DesignTimeBootstrapper(typeof(AppBootstrapper))]

Я не хочу использовать образцы данных Blend, а) поскольку создается впечатление, что они не создают данные для ObservableCollection, и б) я нахожусь в режиме разработки по определению, поэтому все изменится довольно сильно, но мои 'сгенерированные данные ' не буду.

Во всяком случае, похоже, ничего не происходит.

Q1: Как можно отладить инициализацию во время разработки моего загрузчика? В2: Нужны ли мне дополнительные пространства имен / атрибуты смешивания в моем View XAML?

(В моем загрузчике я просто регистрирую другой модуль, в котором я хочу заменить RunTimeService на DesignTimeService, экспортируя интерфейс IService).

ТИА

 EngineerSpock23 мая 2016 г., 21:23
Вам удалось заставить этот кусок кода работать?

Ответы на вопрос(1)

Решение Вопроса

Откройте свой проект в VS2010Установите точку останова в конструкторе атрибута сборкиНачать новый экземпляр Blend 4Начиная с VS2010, используйте Debug -> Attach to Process: и выберите Blend.Переключитесь на Blend и откройте свой проектОткройте файл XAML, который ссылается на ваши образцы данных

Также любойDebug.WriteLine должен появиться в окне вывода VS2010.

Если вы не можете заставить работать метод атрибута (я сам не пробовал), вы можете использовать этот метод (который я использовал) изMVVM Light:

private bool? _isInDesignMode;

public bool IsInDesignMode
{
    get
    {
        if (!_isInDesignMode.HasValue)
        {
            var prop = DesignerProperties.IsInDesignModeProperty;
            _isInDesignMode =
                (bool)DependencyPropertyDescriptor
                .FromProperty(prop, typeof(FrameworkElement))
                .Metadata.DefaultValue;
        }

        return _isInDesignMode.Value;
    }
}
 Ian21 янв. 2011 г., 13:00
Итак, в вашей ViewModel вы проверяете, верно ли это, а затем возвращаете ложные данные из свойства виртуальной машины, например ObservableCollection? Проблема, которую я мог видеть, заключалась в подключении ViewModel и View, поскольку я использую MEF и Prism. Я посмотрю на то, как вы сказали подключить vs2010 и смешать, тогда, возможно, я смогу заставить это работать. Благодарю.

Ваш ответ на вопрос