Caliburn.Micro:无法关闭标签

时间:2012-08-08 14:53:41

标签: wpf tabcontrol caliburn.micro

在我的WPF Caliburn.Micro应用程序中,我有一个TabControl。我希望能够根据需要关闭标签。我在这里找到了一种方法:

http://devlicio.us/blogs/rob_eisenberg/archive/2010/10/19/caliburn-micro-soup-to-nuts-part-6c-simple-mdi-with-screen-collections.aspx

但是当我尝试应用它时,我收到一个错误:

  

找不到方法CloseItem的目标。

这是我的代码:

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

你能帮忙吗?

感谢。

2 个答案:

答案 0 :(得分:7)

另一种方法是:

<Button Content="X" cal:Message.Attach="DeactivateItem($dataContext, 'true')" />

这样您就不必创建额外的方法。

答案 1 :(得分:2)

不完全确定是什么导致了你的确切问题(我怀疑一个非常古老的教程加上一个完全不同的程序集是问题)但我知道如何让它工作。创建这样的旧公共方法并调用它。它将覆盖你在那里所拥有的东西,所以你可以将其命名为CloseItem。然后调用此扩展方法并传入IConductor实例和IScreen实例。

public void CloseItem(object dataContext)
{
    ScreenExtensions.CloseItem(this, dataContext);
}