没有处理“后退”按钮单击的嵌入式功能,因为Windows UI 导航概念不接受根据在这些操作已显示后更改的条件执行或不执行的操作。所有动作(导航栏动作和嵌入式动作,如“后退”按钮)是否显示或不基于其CanExecute()方法实现。
换句话说,如果您需要取消“返回”操作,则根本不应该显示此操作(要删除“返回”导航元素,您应该清除特定容器的 Parent 属性)。
因此,为防止用户使用“返回”或“主页”导航操作停用页面内容容器,您不应将此页面内容容器包含到导航层次结构中,并使用 WindowsUIView.Controller 手动导航到此容器并从该容器返回方法和自定义按钮:
WindowsUIButton customBackButton;
public Form1() {
InitializeComponent();
// add custom button on 'page1' container
customBackButton = new DevExpress.XtraBars.Docking2010.WindowsUIButton();
customBackButton.Caption = "Back to Main Tile Container";
customBackButton.Image = ContentContainerAction.Back.Image;
page1.Buttons.Add(customBackButton);
page1.ButtonClick += Page_ButtonClick;
tileContainer1.Click += TileContainer_Click;
}
void TileContainer_Click(object sender, TileClickEventArgs e) {
page1.Document = ((Tile)e.Tile).Document;
page1.Subtitle = ((Tile)e.Tile).Document.Caption;
// handle 'tileContainer1' click to activate 'page1' manually
e.Handled = windowsUIView1.Controller.Activate(page1);
}
const string messageText = "Do you want to navigate back in Main Tile Container?";
void Page_ButtonClick(object sender, ButtonEventArgs e) {
if(e.Button == customBackButton) {
if(MessageBox.Show(messageText, "Back", MessageBoxButtons.YesNo) == DialogResult.Yes)
windowsUIView1.Controller.Activate(tileContainer1); // activate container
}
}