更改选项卡时刷新/重新加载MUI WPF页面

时间:2014-04-05 07:27:50

标签: c# wpf xaml tabs modern-ui

我正在使用Modern UI for WPF开发桌面应用程序。当我转到新的标签页时,我尝试刷新标签页,但我无法做到。

当我使用我的标签控制器转到另一个页面时,我想刷新我的MUI WPF标签页。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

我不太确定你的意思,但是通过在控件上调用InvalidateVisual(),你可以强制对它进行视觉刷新,如果这就是你所追求的,因为它听起来像你有一个WPF数据发生变化时未更新的控件。

基于MSDN documentation,这个:

  

使元素的呈现无效,并强制执行完整的新布局。在布局周期完成后调用OnRender

例如:

        var grid = new Grid();
        // Our grid should refresh after this, 
        // although in normal circumstances it would by default regardless.
        grid.InvalidateVisual();    

我希望这是有用的。

答案 1 :(得分:0)

您可以使用SelectionChanged事件来处理此问题。您可以使用SelectionChanged刷新MUI WPF标签页。

<TabControl x:Name="MyTab" SelectionChanged="MyTabControl_SelectionChanged">
    <TabItem x:Name="TabItem1" Header="Tab 1"/>
    <TabItem x:Name="TabItem2" Header="Tab 2"/>
    <TabItem x:Name="TabItem3" Header="Tab 3"/>
</TabControl>

然后您可以访问事件中的每个TabItem:

private void MyTabControl_SelectionChanged(object sender, SelectionChangedEventArgs e){
    if (TabItem1.IsSelected){}
    if (TabItem2.IsSelected){}
    if (TabItem3.IsSelected){}  
}

答案 2 :(得分:0)

虽然选择的答案还可以,但这可能不是解决问题的最佳方法。

MUI包含一个内容导航框架,该框架根据链接uri处理内容的加载,卸载和历史导航。如果希望您的内容了解导航事件,例如已加载和已卸载事件,则需要实现一个接口。

通过实现FirstFloor.ModernUI.Windows命名空间中可用的IContent接口,使您的内容导航意识不断。

一个简单的示例是:

public class MyContent : UserControl, IContent
{
  public void OnFragmentNavigation(FragmentNavigationEventArgs e)
  {
  }
  public void OnNavigatedFrom(NavigationEventArgs e)
  {
  }
  public void OnNavigatedTo(NavigationEventArgs e)
  {
    //Refresh your page here
  }
  public void OnNavigatingFrom(NavigatingCancelEventArgs e)
  {
    // ask user if navigating away is ok
    if (ModernDialog.ShowMessage("Navigate away?", "navigate", MessageBoxButton.YesNo) == MessageBoxResult.No) {
      e.Cancel = true;
    }
  }
}