2013-07-04 2 views
0

У меня возникла ошибка, когда я использую Catel Framework вместе с Xceed.Wpf.Toolkit.PropertyGrid. Ошибка заключается в том, что PropertyGrid невидим пользовательские атрибуты, если я наследовать от ViewModelBase Если я наследовать от ModelBase, что все нормальноCatel MVVM xctk: PropertyGrid = Ошибка

Этот код работы Wery хорошо

public class PersonViewModel : ModelBase 
{ 
    [DisplayName(@"Название")] 
    [Description(@"Название стратегии")] 
    [Category(@"Основные")] 
    [PropertyOrder(0)] 
    public string Person 
    { 
     get { return GetValue<string>(PersonProperty); } 
     set { SetValue(PersonProperty, value); } 
    } 

    public static readonly PropertyData PersonProperty = RegisterProperty("Person", typeof(string)); 
} 

но этот код Ждут» т работа

public class PersonViewModel : ViewModelBase 
{ 
    [DisplayName(@"Название")] 
    [Description(@"Название стратегии")] 
    [Category(@"Основные")] 
    [PropertyOrder(0)] 
    public string Person 
    { 
     get { return GetValue<string>(PersonProperty); } 
     set { SetValue(PersonProperty, value); } 
    } 

    public static readonly PropertyData PersonProperty = RegisterProperty("Person", typeof(string)); 
} 

XAML

<xcad:LayoutAnchorable ContentId="alarms" 
               Title="Alarms" 
               > 
          <xctk:PropertyGrid BorderThickness="0" 
               SelectedObject="{Binding Path=SelectedObject}" 
               ShowSearchBox="False" 
               ShowSortOptions="False" 
               Width="Auto" 
               AutoGenerateProperties="False" 
               NameColumnWidth="150"> 
           <xctk:PropertyGrid.PropertyDefinitions> 
            <xctk:PropertyDefinition Name="Person" /> 
           </xctk:PropertyGrid.PropertyDefinitions> 
          </xctk:PropertyGrid> 
         </xcad:LayoutAnchorable> 
+0

Это странно. Когда вы включаете «перерыв во всех исключениях», уверены ли вы, что исключений нет? –

+0

Да, вы правы У меня есть исключение Не удалось загрузить файл или сборку «Catel.MVVM.Aero2» – user45245

+0

Это можно игнорировать. Это WPF, пытающийся загрузить темы, если они доступны. Существуют ли другие исключения? Можете ли вы предоставить небольшой репродуктор? –

ответ

1

При использовании модели просмотра важно добавить к ней представление. Вы создали PersonViewModel, но нет PersonView.

Если вы не хотите создавать отдельный просмотр для Person, тогда нет необходимости в PersonViewModel. Мы считаем, что это не правильный способ создания моделей подзадач в модели представления. Вот почему мы создали решение вложенных пользовательских элементов управления в Catel.

У вас есть 2 варианта здесь:

  1. Создать пользовательский PersonView (который будет работать динамически с PersonViewModel)
  2. Держите PersonModel (который является то, что это, модель человека)
Смежные вопросы