Из MSDN:
Чтобы создать экземпляр в качестве элемента объекта в XAML, пользовательский класс должен соответствовать следующим требованиям:
Пользовательский класс должен быть открытым и должен предоставлять значение по умолчанию (без параметров)) общественный конструктор.(См. Следующий раздел для примечаний относительно структур.)
Пользовательский класс не должен быть вложенным классом.Дополнительная точка в пути полного имени делает неоднозначным деление пространства имен класса и мешает другим функциям XAML, таким как присоединенные свойства.
Если объект может быть создан как элемент объекта, созданный объект может заполнитьФорма элемента свойства любых свойств, которые принимают объект как базовый тип.
Вы можете предоставить значения объектов для типов, которые не соответствуют этим критериям, если вы включите преобразователь значений.Для получения дополнительной информации см. Преобразователи типов и расширения разметки для XAML.
Оттуда у вас есть два варианта:
1) Использование TypeConverter :
Использование преобразователя типов позволит вам создать экземпляр объекта без конструктора без параметров, но вам нужно будет предоставить TypeConverter, который будет выполнять его создание.
Теперь мне никогда не приходилось его использовать, я не могу вам помочьдалее с этим.
2) Получить IService с помощью ServiceLocator:
public class MyUserControl : UserControl
{
public IService Service { get; set; }
public MyUserControl()
{
Service = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<IService>();
// You can do something with Service here already.
}
}
Я понимаю, что это изменение в дизайне вашего класса, но, надеюсь, вы справитесь с этим.
Надеюсь, это поможет,
Баб.