2013-07-04 41 views
0

我在使用Catel Framework和Xceed.Wpf.Toolkit.PropertyGrid时发生错误。 错误在于一个事实,即PropertyGrid中是不可见的自定义属性,如果我从ViewModelBase 继承如果我从模型库继承一切正常Catel MVVM xctk:PropertyGrid = Error

此代码工作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试图加载主题如果可用。还有其他例外吗?你能提供一个小的repro? –

回答

1

使用视图模型时,为其添加视图很重要。您创建了一个PersonViewModel,但没有PersonView。

如果您不想为Person创建单独的视图,那么不需要PersonViewModel。我们认为这不是在视图模型内创建子视图模型的正确方法。这就是为什么我们在Catel中创建嵌套用户控件解决方案的原因。

你有2个选择这里:

  1. 创建自定义PersonView(将与 PersonViewModel工作动态)
  2. 保持PersonModel(这是它是什么,一个人的模型)