2017-04-07 54 views
0

我是一個軟件開發的學生,我的schoolproject我正在尋找的解決方案在基地視圖加載不同查看加載不同的看法。 我得到了一個運行在Raspberry Pi上的UWP應用程序。
對於我的應用程序,我需要在兩個用戶(普通用戶和專家用戶)之間導航。

那麼我的問題是什麼?
如何在兩個用戶之間切換,但沒有重新加載視圖(頁面)?
視圖無法刷新,因爲內容是實時的,並且在用戶視圖之間切換時也必須運行。C# - UWP:在一個基本觀點

這是一個C#Uwp應用程序。 現在我有文件:

  • BaseView.xaml(這是我想加載Aview或Bview(主)視圖)
  • AView.xaml
  • BView.xaml

Maby有人可以幫助我嗎?

謝謝。

回答

0

您可以將ContentPresenter放入您的BaseView中。 然後將你的AView和BView包裝到數據模板中。現在,您可以使用轉換器來選擇ContentPresenter顯示的模板。

<Page> 
    <Page.Resources> 
     <DataTemplate x:Key="AViewTemplate"> 
      <views:AView /> 
     </DataTemplate> 
     <DataTemplate x:Key="BViewTemplate"> 
      <views:BView /> 
     </DataTemplate> 
     <conv:ModeToTemplateConverter ATemplate="{StaticResource AViewTemplate}" BTemplate="{StaticResource BViewTemplate}" /> 
    </Page.Resources> 

    <ContentPresenter Content="{Binding YourViewModel}" 
         ContentTemplate="{Binding Mode, Converter={StaticResource ModeToTemplateConverter}}" /> 
</Page> 

轉換器可以是這樣的:

public class ModeToTemplateConverter : IValueConverter 
    { 
     public DataTemplate ATemplate { get; set; } 

     public DataTemplate BTemplate { get; set; } 

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      var mode = value as Mode?; 
      switch (mode) 
      { 
       case Mode.A: 
        return ATemplate; 
       case Mode.B: 
        return BTemplate; 
       default: 
        return null; 
      } 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
0

你可以有兩種觀點,按您在BaseView.xaml文件的需要。在那裏你維護2個網格 - 一個用於AView,另一個用於BView,然後根據你的用戶標準隱藏/顯示兩個網格的可見性。

乾杯!