MahApps Metro-在VS Styled Tabcontrol中关闭选项卡

时间:2013-10-24 18:43:20

标签: mahapps.metro

我在使用Caliburn.Micro框架的项目中使用VS样式的Tabcontrol(来自MahApps.Metro项目),我正在寻找一种让我的ViewModel从Conductor.Collection.OneActive继承的方法知道何时使用Tab正在关闭。不幸的是,关闭按钮已经包含在风格中,这让我感到困惑。我在MahApps Source文件中查找了这个VS Tabcontrol样式,发现每个关闭按钮都绑定到CloseCommmand(Command =“{Binding Path = CloseCommand}”)。如何点击该按钮?

2 个答案:

答案 0 :(得分:0)

DeactivateItem事件附加到关闭按钮。

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

DeactivateItem是一种校准微观的框架方法,在Conductor类中定义。 此方法将关闭关联的视图并从Conductor Collection中删除视图。

供参考:

框架方法。

public override void DeactivateItem(T item, bool close) {
            if(item == null || !item.Equals(ActiveItem))
                return;

            CloseStrategy.Execute(new[] { ActiveItem }, (canClose, items) => {
                if(canClose)
                    ChangeActiveItem(default(T), close);
            });
        }

答案 1 :(得分:0)

由于CloseTabCommand将触发Unloaded事件,我的解决方法是附加一个处理程序。

public partial class MyTab : MetroTabItem {

    public MyTab() {
        InitializeComponent();
        this.Unloaded += dosomthing;
    }

    public void dosomething(Object sender, EventArgs e) {
        //Your code
    }
}