2017-01-23 9 views
9

मैं Win10.1 के लिए Win8.1 ऐप को WinW के लिए UWP पर पोर्ट कर रहा हूं और AppBar के साथ एक अजीब समस्या का सामना कर रहा हूं। हमने AppBar के बजाय CommandBar का उपयोग करने का प्रयास किया है, लेकिन समस्या अभी भी हमारे लिए होती है। हम MyToolkit के नवीनतम संस्करण (2.5.16 इस लेखन के रूप में) पर हैं। हमारे विचारों इसलिए की तरह प्राप्त कर रहे हैं:मेरा ऐपबार क्लोज़ड डिस्प्लेमोड के रूप में क्यों दिखाई देता है। वास्तविक सेटिंग के बावजूद पेज लोड पर कॉम्पैक्ट?

SomeViewMtPage से BaseView dervices से निकला (Page से निकला)

तो, एक विशेष दृश्य के लिए (इस मामले में, HomeView), XAML लगता है:

<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 एक UserControl है जिसमें कुछ बटन हैं, और NavigationViewContext और NavigationViewModel वर्णन करते हैं कि कौन से बटन सक्रिय होना चाहिए, और आगे।

enter image description here

के बाद:

समस्या

कि इस आधे खुले, आधा बंद कर दिया AppBar उपस्थिति (लगभग लेकिन काफी वास्तव में नहीं के रूप में यदि ClosedDisplayModeCompact करने के लिए सेट किया गया था) तो तरह का एक तरह का परिणाम है ClosedDisplayMode="Minimal"<AppBar> नियंत्रण में, जैसा कि this question में बताया गया है, लाइव विज़ुअल ट्री पुष्टि करता है कि ऐपबार में IsOpen = 0 और AppBarClosedDisplayMode.Minimal है ... लेकिन यह अभी भी स्क्रीनशॉट के रूप में अभी भी अजीब रूप से दिखाई देता है।

अजीब, उपयोगकर्ता दूर HomeView से कुछ अन्य दृश्य पर वापस यह पर जाने के बाद अगर, AppBar सही ढंग से AppBarClosedDisplayMode.Minimal साथ प्रदान की गई है (!):

enter image description here

हम से निपटने की कोशिश की है दृश्य की NavigatedTo घटना और मैन्युअल रूप से ClosedDisplayMode से Minimal पर मजबूर कर रहा है, लेकिन यह प्रस्तुत आउटपुट को प्रभावित नहीं करता है (और किसी भी मामले में, लाइव विज़ुअल ट्री पुष्टि करता है कि यह पहले से ही Minimal पर सही ढंग से सेट हो रहा है)।

कोई विचार क्यों हो रहा है, और/या AppBar का कारण ClosedDisplayMode = Minimal के साथ पहले नेविगेट किए बिना प्रस्तुत किया जाए? मुझे यकीन है कि मैं शायद किसी भी तरह बलपूर्वक बल दूंगा, लेकिन मुझे लगता है कि शायद एक बेहतर तरीका है या मुझे कुछ आसान याद आ रही है।

+0

क्या आपने एक टेम्पलेट संपादित करने और कॉम्पैक्ट व्यू भाग पर टिप्पणी करने का प्रयास किया है? – AbsoluteSith

+0

नहीं। मुद्दा यह नहीं है कि इसे 'कॉम्पैक्ट' पर सेट किया जा रहा है - लाइव विज़ुअल ट्री इसकी पुष्टि करता है - यह है कि इसे किसी भी तरह से आधे रास्ते में प्रस्तुत किया जा रहा है, जो कि ऐसा लगता है कि यह 'कॉम्पैक्ट' पर सेट किया गया था। –

+0

'ऐपबार' और 'कमांडबार' में दृश्य राज्यों और संबंधित एनिमेशन का विस्तृत संग्रह है। संभावना है कि उनमें से एक उस प्रभाव के लिए जिम्मेदार है जिसका आप वर्णन कर रहे हैं। यह पता लगाने की बात है कि कौन सा। देखो [यहां] (https://msdn.microsoft.com/en-us/library/windows/apps/mt299108.aspx)। – jsanalytics

उत्तर

4

बस CommandBar पर स्विच करें। CommandBarMinimal और Compact मोड दोनों के लिए, आउट-ऑफ-द-बॉक्स पूरी तरह से अच्छी तरह से काम करता है। CommandBarAppBar पर अनुशंसित पसंदीदा नियंत्रण है। जाहिर है, AppBar रखने का एकमात्र कारण परिवर्तन को कम करना है।

AppBar - MSDN

महत्वपूर्ण आप AppBar केवल का उपयोग करना चाहिए जब आप AppBar का उपयोग करता है एक यूनिवर्सल Windows 8 एप्लिकेशन के उन्नयन कर रहे हैं, और परिवर्तन को कम करने की जरूरत है। विंडोज 10 में नए ऐप्स के लिए, हम इसके बजाय कमांडबार नियंत्रण का उपयोग करने की सलाह देते हैं।

enter image description here

पृष्ठ:

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

उपयोगकर्ता नियंत्रण:

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

संबंधित मुद्दे

 संबंधित मुद्दे