2011-02-03 6 views
1

CM 용 자습서부터 마지막 ​​예제 인 here까지 시작합니다. 저는 CM으로 할 수있는 것에 대해 더 잘 느끼고 싶었습니다. 그래서 wpf 프로젝트에서 일반적으로 할 일을 한 번 해봤고, View 폴더와 ViewModels 폴더를 만들었습니다. 협약은 여전히 ​​모든 것을 찾아야합니다.caliburn 마이크로 자습서 문제

기타 모든 예제는이 방법으로 훌륭하게 작동하지만 CM과 실버 라이트 디버깅 방법에 대해 모르는 사이에 나는 데이터 컨텍스트 문제로 보이는 것을 설명하기가 어려웠습니다. .

누군가가 문제를 발견 할 수 있습니까?

건배,
Berryl

VM

[Export(typeof(IShell))] 
public class ShellWithCompositionViewModel : PropertyChangedBase 
{ 
    public BindableCollection<Model> Items { get; private set; } 

    public ShellWithCompositionViewModel() { 
     Items = new BindableCollection<Model> 
       { 
        new Model {Id = Guid.NewGuid()}, 
        new Model {Id = Guid.NewGuid()}, 
        new Model {Id = Guid.NewGuid()}, 
        new Model {Id = Guid.NewGuid()} 
       }; 
    } 

    public void Add() { Items.Add(new Model {Id = Guid.NewGuid()}); } 

    public void Remove(Model child) { Items.Remove(child); } 
} 

VIEW

<UserControl x:Class="Caliburn.Micro.Hello.Views.ShellWithCompositionView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:cal="http://www.caliburnproject.org" 
     > 
<StackPanel> 

    <ItemsControl x:Name="Items"> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Button Content="Remove" cal:Message.Attach="Remove($dataContext)" /> 
        <TextBlock Text="{Binding Id}" /> 
       </StackPanel> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

    <Button Content="Add" cal:Message.Attach="Add" /> 

</StackPanel> 

BOOT

,

수정은

// left off the model the 1st time (caps not needed!) 
public class HelloBootstrapper : Bootstrapper<ShellWithCompositionViewMODEL> { } 
+0

Duh ... 이것은 실제로 쉬운 CM 문제는 아닙니다. Bootstrapper에 단서가 있습니다. 빠른 답을 원한다면. – Berryl

답변

2

문제는 당신의 부트 스트 래퍼가 뷰 모델보다는보기를 참조하는 것입니다. 또한,

public class HelloBootstrapper : Bootstrapper<IShell> { } 

를 내보내기 속성을 적용 할 수있을뿐만 아니라 ShellWithCompositionViewModel에 IShell 인터페이스를 구현 있는지 확인하십시오 당신이 그것을 변경해야합니다.

+0

그래, 10 포인트 올려 줄 때까지 너를 기다려야한다고 생각하지 않았다. - – Berryl

+0

잠깐만, 대괄호를 생략하고있는 마크 업인지, 아니면 전혀 읽지 않았습니까? 유형??? HelloBootstrapper : 편집 된 질문에 따라 부트 스트 래퍼 {{ShellWithCompositionView}} {}이어야합니다. 건배 – Berryl