C# DevExpress WindowUI查看后退按钮事件

C# DevExpress WindowUI查看后退按钮事件,c#,winforms,devexpress,devexpress-windows-ui,C#,Winforms,Devexpress,Devexpress Windows Ui,我正在使用DevExpress12.2为Windows7开发一个类似MetroUI的应用程序。 然而,我面临着一个自己似乎无法解决的问题 我正在使用DocumentManager创建一个平铺容器页面。 因此,DevExpress将自动为我们生成一个后退按钮 用户可以随时单击后退按钮返回平铺菜单。 但是,在某些情况下,例如数据输入,我们需要强制用户在用户完成操作之前不要返回 当用户单击“后退”按钮时,我是否可以捕捉到任何事件? 或者,在某些情况下,是否有任何方法可以隐藏“后退”按钮?没有处理“后退

我正在使用DevExpress12.2为Windows7开发一个类似MetroUI的应用程序。 然而,我面临着一个自己似乎无法解决的问题

我正在使用DocumentManager创建一个平铺容器页面。 因此,DevExpress将自动为我们生成一个后退按钮

用户可以随时单击后退按钮返回平铺菜单。 但是,在某些情况下,例如数据输入,我们需要强制用户在用户完成操作之前不要返回

当用户单击“后退”按钮时,我是否可以捕捉到任何事件?
或者,在某些情况下,是否有任何方法可以隐藏“后退”按钮?

没有处理“后退”按钮单击的嵌入式功能,因为不接受已执行的操作或不基于这些操作显示后更改的条件的操作。所有动作(导航栏动作和“后退”按钮等嵌入式动作)是否显示取决于其CanExecute()方法实现

换句话说,如果需要取消“后退”操作,则不应显示此操作(要删除“后退”导航元素,应清除特定容器的父属性)

因此,要防止用户通过使用“返回”或“主页”导航操作停用页面内容容器,您不应使用WindowsUIView手动将此页面内容容器包括在此容器中,并导航到此容器和从该容器返回。控制器方法和:


没有处理“后退”按钮单击的嵌入式功能,因为不接受已执行的操作或不基于已显示这些操作后更改的条件的操作。所有动作(导航栏动作和“后退”按钮等嵌入式动作)是否显示取决于其CanExecute()方法实现

换句话说,如果需要取消“后退”操作,则不应显示此操作(要删除“后退”导航元素,应清除特定容器的父属性)

因此,要防止用户通过使用“返回”或“主页”导航操作停用页面内容容器,您不应使用WindowsUIView手动将此页面内容容器包括在此容器中,并导航到此容器和从该容器返回。控制器方法和:

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
    }
}