我在具有 Caliburn.Micro 框架的项目中使用 VS 样式的 Tabcontrol(来自 MahApps.Metro 项目),并且我正在寻找一种方法让从 Conductor.Collection.OneActive 继承的 ViewModel 知道何时关闭选项卡. 不幸的是,关闭按钮已经包含在样式中,这让我有点困惑。我在 MahApps 源文件中查找了这种 VS Tabcontrol 样式,发现每个关闭按钮都绑定到一个 CloseCommmand (Command="{Binding Path=CloseCommand}")。我如何对单击该按钮做出反应?
问问题
649 次
2 回答
0
将DeactivateItem
事件附加到关闭按钮。
<Button cal:Message.Attach="DeactivateItem($dataContext, 'true')" />
这DeactivateItem
是caliburn micro的一个框架方法,定义在Conductor类中。此方法将关闭关联的视图并从导体集合中删除视图。
供参考:
框架方法。
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);
});
}
于 2015-06-26T16:51:55.737 回答
0
由于 CloseTabCommand 将触发 Unloaded 事件,因此我的解决方法是将处理程序附加到它。
public partial class MyTab : MetroTabItem {
public MyTab() {
InitializeComponent();
this.Unloaded += dosomthing;
}
public void dosomething(Object sender, EventArgs e) {
//Your code
}
}
于 2016-01-28T17:23:55.457 回答