2013-07-04 51 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(這是它是什麼,一個人的模型)