簡體   English   中英

更改選項卡時刷新/重新加載MUI WPF頁面

[英]Refresh/Reload MUI WPF Page when Tab is Changed

我正在使用用於WPF的Modern UI開發桌面應用程序。 當我轉到新的標簽頁時,我嘗試刷新我的標簽頁,但是無法。

當我使用選項卡控制器轉到另一個頁面時,我想刷新MUI WPF選項卡頁面。

誰能幫我?

我不太清楚您的確切意思,但是通過在控件上調用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();    

我希望這是有用的。

您可以使用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){}  
}

雖然選擇的答案還可以,但這可能不是解決問題的最佳方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM