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