2

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

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

谁能帮我?

4

3 回答 3

1

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

基于MSDN 文档,这:

使元素的渲染无效,并强制执行全新的布局传递。OnRender 在布局周期完成后调用

例如:

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

我希望这是有用的。

于 2014-04-05T10:43:53.663 回答
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){}  
}
于 2014-08-18T04:41:54.040 回答
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;
    }
  }
}
于 2018-08-08T16:56:04.637 回答