3

在我的 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>

能否请你帮忙?

谢谢。

4

2 回答 2

7

另一种方法是:

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

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

于 2013-10-09T16:58:17.130 回答
2

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

public void CloseItem(object dataContext)
{
    ScreenExtensions.CloseItem(this, dataContext);
}
于 2012-08-08T16:26:30.587 回答