2011-02-03 99 views
1

我剛剛開始CM的教程,直到最後一個例子here。我想更好地感受一下我可以用CM做些什麼,所以我在wpf項目中做了一些我通常會做的事情,爲Views創建一個文件夾,爲ViewModel創建一個文件夾。公約應該仍然可以找到一切,對吧?caliburn微型教程問題

所有其他示例都以這種方式工作得很好,但在對CM和如何調試silverlight一無所知之間,我無法解釋看起來像是數據上下文問題 - 只是添加按鈕顯示。

有人可以發現問題嗎?

乾杯,
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

namespace Caliburn.Micro.Hello 
{ 
    //public class HelloBootstrapper : Bootstrapper<ShellViewModel> { } 
    //public class HelloBootstrapper : Bootstrapper<ShellWithParametersViewModel> { } 
    public class HelloBootstrapper : Bootstrapper<ShellWithCompositionView> { } 
} 

的FIX

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

Duh ...這實際上是一個簡單的問題,絕對不是CM問題。線索在Bootstrapper中,如果有人想要一些快速回答的話。 – Berryl 2011-02-03 14:44:38

回答

2

的問題是,你的引導程序引用視圖,而不是視圖模型。你應該把它改成這樣:

public class HelloBootstrapper : Bootstrapper<IShell> { } 

另外,確保您實現對ShellWithCompositionViewModel的IShell的接口,除了應用導出屬性。

+0

是的 - 沒想到我不得不等待*你*挖出十點,但: - ) – Berryl 2011-02-03 22:07:54