2013-10-24 2 views
2

Caliburn.Micro 프레임 워크가있는 프로젝트에서 VS 스타일의 Tabcontrol (MahApps.Metro 프로젝트에서)을 사용하고 있는데 내 ViewModel을 Conductor.Collection.OneActive에서 상속받은 탭이 닫힐 때를 알 수 있습니다. 불행히도 닫기 버튼은 이미 스타일에 포함되어 있으며 약간 혼란 스럽습니다. MahApps Source 파일에서이 VS Tabcontrol 스타일을 찾아 보았을 때 각 닫기 버튼이 CloseCommmand (Command = "{Binding Path = CloseCommand}")에 바인딩되어 있음을 확인했습니다. 어떻게 그 버튼 클릭에 반응 할 수 있습니까?MahApps Metro- VS 스타일의 Tabcontrol에서 닫기 탭에 적용

답변

0

닫기 버튼에 DeactivateItem 이벤트를 첨부하십시오.

DeactivateItem은 도체 클래스로 정의 된 caliburn 마이크로의 프레임 워크 방법입니다. 이 메서드는 연결된 뷰를 닫고 Conductor Collection에서 뷰를 제거합니다.

FYI :

프레임 워크 방법입니다.

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); 
      }); 
     } 
0

CloseTabCommand는 Unloaded 이벤트를 트리거하므로 내 해결 방법은 처리기를 연결하는 것입니다.

public partial class MyTab : MetroTabItem { 

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

    public void dosomething(Object sender, EventArgs e) { 
     //Your code 
    } 
} 
관련 문제