2017-01-23 16 views
9

Bir Win8.1 uygulamasını Win10 için UWP'ye taşıyorum ve AppBar ile garip bir sorun yaşıyorum. AppBar yerine CommandBar kullanmayı denedik, ancak sorun hala bizim için gerçekleşir. MyToolkit'in en son sürümündeyiz (bu yazıdan 2.5.16). Bizim görüşlerini şöyle elde edilir:Neden AppBar, gerçek ayardan bağımsız olarak Sayfa Yükü olarak ClosedDisplayMode.Compact sayfası olarak görünüyor?

SomeViewMtPage den BaseView dervices kaynaklanmaktadır belirli bir görünüm için,

Yani (Page türemiştir) (bu durumda, HomeView), XAML benziyor:

<views:BaseView 
    x:Name="pageRoot" 
    x:Class="OurApp.HomeView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:controls="using:OurApp.Controls" 
    xmlns:views="using:OurApp.Views" 
    xmlns:viewModels="using:ViewModels" 
    xmlns:fake="using:ViewModels.Fake" 
    mc:Ignorable="d" > 
    <views:BaseView.TopAppBar> 
     <AppBar> 
     <controls:NavigationView 
      x:Name="NavigationView"> 
      <controls:NavigationView.Context> 
       <viewModels:NavigationViewModel /> 
      </controls:NavigationView.Context> 
     </controls:NavigationView> 
     </AppBar> 
    </views:BaseView.TopAppBar> 
    <!-- other stuff not relevant to AppBars, etc --> 
</views:BaseView> 

NavigationView, bazı düğmeleri olan bir UserControl ve NavigationViewContext ve NavigationViewModel hangi düğmelerin hangi sayfada aktif olması gerektiğini açıklar.

enter image description here

sonra:

sorun bu yarım açık, yarı kapalı AppBar görünüm (neredeyse ama tamamen değil tam Compact olarak ayarlanmış ClosedDisplayMode sanki) şöyle bir tür yol açmasıdır ClosedDisplayMode="Minimal", this question numaralı belgede belirtildiği gibi ClosedDisplayMode="Minimal" denetimine eklendiğinde, canlı görsel ağaç AppBar'ın IsOpen = 0 ve olduğunu doğrular ancak yine de ekran görüntüsünde olduğu gibi inatla yarı açık görünür.

kullanıcı ona geri sonra HomeView bazı diğer görüşe ayrılır ve eğer

Garip, AppBar doğru AppBarClosedDisplayMode.Minimal ile oluşturulur (!):

enter image description here

Biz taşıma denedim görünümü en NavigatedTo olay ve el ile için Minimal zorlama, ancak bu işlenen çıktıyı etkilemez (ve her durumda, canlı görsel ağaç zaten doğru olarak Minimal olarak ayarlanmış olduğunu doğrular).

Bunun neden olduğuyla ilgili herhangi bir fikir ve/veya AppBar neden ilk kez gitmek zorunda kalmadan ClosedDisplayMode = Minimal neden oluşturulsun? Muhtemelen böyle bir şekilde kaba kuvvetler kullanabileceğime eminim, ama muhtemelen daha iyi bir yol var gibi hissediyorum ya da oldukça basit bir şeyi özlüyorum.

+0

Bir şablonu düzenlemeyi ve kompakt görünüm bölümünü yorumlamayı denediniz mi? – AbsoluteSith

+0

Hayır. Sorun, 'Kompakt' olarak ayarlanmış değil - canlı görsel ağaç bunu onaylıyor - bir şekilde yarı açık hale getiriliyor, bu da 'Kompakt' olarak ayarlanmış gibi görünüyor. –

+0

'AppBar' ve' CommandBar', görsel durumların ve ilgili animasyonların kapsamlı bir koleksiyonuna sahiptir. Şanslar, tanımladığınız etkiden sorumlu olanlardan biridir. Hangisini bulmak meselesi. [BURAYA] bakın (https://msdn.microsoft.com/en-us/library/windows/apps/mt299108.aspx). – jsanalytics

cevap

4

Sadece CommandBar'a geçin. CommandBar, her ikisi için de Minimal ve Compact modları için gayet iyi çalışıyor. , AppBar üzerinde önerilen tercih edilen denetimdir. Görünüşe göre, AppBar'u tutmanın tek nedeni değişiklikleri en aza indirmektir.

AppBar - MSDN.

Önemli Sen AppBar kullanan Evrensel Windows 8 uygulamasını yükseltme yaparken sadece AppBar kullanın ve değişiklikleri en aza indirmek gerekir gerekir. Windows 10'daki yeni uygulamalar için, bunun yerine CommandBar denetimini kullanmanızı öneririz.

enter image description here

Sayfa:

<paging:MtPage 
x:Class="App3.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:App3" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:paging="using:MyToolkit.Paging" 
mc:Ignorable="d"> 

<paging:MtPage.Resources> 
</paging:MtPage.Resources> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
</Grid> 

<paging:MtPage.TopAppBar> 
    <CommandBar x:Name="appbar1" ClosedDisplayMode="Minimal" > 
     <CommandBar.Content> 
      <local:MyUserControl1></local:MyUserControl1> 
     </CommandBar.Content> 
    </CommandBar> 
</paging:MtPage.TopAppBar> 

Kullanıcı Kontrolü:

<UserControl 
x:Class="App3.MyUserControl1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:App3" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
d:DesignHeight="300" 
d:DesignWidth="400"> 

<Grid> 
    <StackPanel Orientation="Horizontal"> 
     <AppBarButton Icon="Home" Label="Home"></AppBarButton> 
     <AppBarButton Icon="Back" Label="Back"></AppBarButton> 
     <AppBarButton Icon="Rotate" Label="Rotate"></AppBarButton> 
    </StackPanel> 
</Grid> 

İlgili konular