Xamarin.forms: [تحسين] إضافة FlyoutItem.IsVisible و Tab.IsVisible و BaseShellItem.IsVisible

تم إنشاؤها على ١٣ فبراير ٢٠١٩  ·  26تعليقات  ·  مصدر: xamarin/Xamarin.Forms

ملخص

قم بتوفير الخصائص المرفقة بحيث يمكن للمستخدمين تحديد ما إذا كان هناك شيء ما مرئيًا في Flyout أو في TabBar بشكل مباشر.

اقتراحات API المستقبلية

يجب أن نضيف خيارات لذلك عندما يستخدم المستخدمون FlyoutDisplayOptions="AsMultipleItems" حتى يتمكنوا من اختيار عرض الأصل كرأس. من خلال التحكم في التوسيع ، يمكننا أيضًا إضافة ذلك كإعداد أيضًا.

API

ج #
FlyoutItem.IsVisible // خاصية BP المرفقة
Tab.IsVisible // خاصية BP المرفقة
BaseShellItem.IsVisible // BP (خاصية غير مرفقة)

## Examples BaseShellItem.IsVisible 

If you set BaseShellIitem IsVisible to false it won't show up in the Flyout or on any of the tabs

## Examples Tab.IsVisible

```xaml
<TabBar>
    <Tab Title="Tab 1">
          <ShellContent Title="Top Tab 1" />
          <ShellContent Title="Top Tab 2"  Tab.IsVisible="false"/>
          <ShellContent Title="Top Tab 3" />
    </Tab>
    <Tab Title="Tab 2" Tab.IsVisible="false">
    </Tab>
</TabBar>

أمثلة FlyoutItem.SVisible

يريد المستخدمون Flyout لا يعكس أيًا من علامات التبويب الموجودة على الشاشة.

<MenuItem title="item 1 "/>
<MenuItem title="item 2" />
<MenuItem title="item 3" />
<TabBar Shell.FlyoutBehavior="Flyout" FlyoutItem.IsVisible="False">
    <Tab>
    </Tab>
</TabBar>

يعرض 3 عناصر منبثقة

  • البند 1
  • البند 2

- البند 3

<FlyoutItem title="item 1 " />
<FlyoutItem title="item 2" />
<ShellContent title="Content" FlyoutItem.IsVisible="False" />

يعرض عنصرين منبثقة حتى إذا كنت في عنصر ShellContent

  • البند 1
  • البند 2

واقعة الاستخدام المقصودة

حالة الاستخدام التي أفكر بها هي أن يكون لديك عنصر في قائمة Hamburger ليقوم المستخدم بترقية التطبيق إلى Premium. بمجرد قيام المستخدم بترقية العنصر ، يجب ألا يكون مرئيًا بعد ذلك.
الأب: # 2415

shell in-progress high impact proposal-accepted enhancement ➕

التعليق الأكثر فائدة

هل يمكننا الحصول على تحديث عن هذا من فضلك؟ (حقا ، حقا تريد هذا!)

ال 26 كومينتر

أي تحديث على هذا؟

@ PureWeen رأيتك تستخدم هذا في Xam Dev Summit ، هل هذا في ما قبل أو أي شيء حتى الآن؟

حالة أخرى للاستخدام المقصود هي حيث يجب أن تكون مجموعة واحدة من الميزات (المستخدمة بشكل متكرر) مرئية على شريط علامات التبويب السفلي ويجب أن تكون مجموعة أخرى من الميزات (الإعدادات ، استعادة المشتريات ، المساعدة ، حول ، إلخ) يمكن الوصول إليها من قائمة الهامبرغر. إذا كان هذا ممكنًا بالفعل ، فيرجى إبلاغي بذلك.

هل يمكننا الحصول على تحديث عن هذا من فضلك؟ (حقا ، حقا تريد هذا!)

صدم

حقا بحاجة الى هذا

أي تحديث على هذا؟

أي تحديث؟ نحن حقا بحاجة إلى هذا.

أي تحديث على هذا؟

يبدو أن شل عديمة الفائدة إلى حد كبير إلا إذا كنت تقوم ببناء تطبيق صغير جدًا. بدون هذا لا يمكننا تعيين أذونات أو إخفاء الصفحات التي لا نريدها أثناء التنقل. كيف هذه ليست أولوية الآن؟

أنت محقbrepetti
أتساءل عما إذا كنت أفتقد شيئًا ما هنا ...

تضمين التغريدة

الجزء المضحك في XDS العام الماضي تمت مناقشته كعنصر كان سيصدر قريبًا ... إلى النقطة التي أظهروا فيها ذلك.

أعتقد أن هذا ربما انتهى به الأمر إلى كونه مانعًا بسبب كيفية تعامله مع مكدس التنقل. لأنني أعلم أن المثال المعروض في XDS كان يستخدم في الغالب مكدس تنقل مخصص / معاد بناؤه.

تمكنت من تشغيله مع TabBar Top Tabs باستخدام حل يدوي عن طريق إنشاء عناصر ShellContent يدويًا (الإضافة والإزالة). في Xamarin.Forms 4.6 ، يعمل الآن أيضًا لنظام iOS (تم إصلاحه منذ يوم واحد فقط في 4.6).

هل يجب أن تعمل في قائمة همبرغر أيضًا؟

@ malte1989 نعم نحن نتحدث عن عنصر قذيفة ويعرف أيضًا باسم شيء موجود على شجرة بصرية الصدفة.

@ malte1989 هل يمكنك تقديم بعض الأمثلة على الكود؟

@ malte1989 هل يمكنك تقديم بعض الأمثلة على الكود؟

بالتأكيد ، سأقوم بنشر رمز حل tabbar غدًا.

@ jakar510

AppShell.xaml

<TabBar Route="tabBar">
        <Tab 
            x:Name="myTab" 
            Route="tab1"
            Icon="tab_icon1.png">
            <ShellContent 
                x:Name="shellStart"
                Route="route1A" 
                Title="title" 
                ContentTemplate="{DataTemplate view:Page1A}" />
        </Tab>
        <Tab 
            Route="tab2"
            Icon="tab_icon2.png">
            <ShellContent 
                Route="route2" 
                Title="title2" 
                ContentTemplate="{DataTemplate view:Page2}" />
        </Tab>
        </Tab>
        <Tab 
            Route="tab3"
            Icon="tab_icon3.png">
            <ShellContent 
                Route="route3" 
                Title="title3" 
                ContentTemplate="{DataTemplate view:Page3}" />
        </Tab>
    </TabBar>

AppShell.xaml.cs

public ShellContent shell0;
public ShellContent shell1;
public ShellContent shell2;
public ShellContent shell3;
public static Tab tabLocal;

البناء

            tabLocal = myTab;
            shell0 = shellStart;
            shell1 = new ShellContent()
            {
                Content = new Page1B(),
                Title = "",
                Route = ""
            };
            shell2 = .... Page1C() ...
            shell3 = .... Page1D() ...
            ...

تبديل الصفحة من 0 إلى 1

AppShell.tabLocal.Items.Add(shell1);
AppShell.tabLocal.Items.Remove(shell0);

ربما تحتاج هاتين الطريقتين للتعامل مع التنقل الخاص بك

protected async override void OnNavigating(ShellNavigatingEventArgs args)
protected override void OnNavigated(ShellNavigatedEventArgs args)

آمل أن يكون هذا يساعدك. واسمحوا لي أن أذكر إذا كان هذا يعمل من أجلك.

سأعمل على هذا من أجل 4.7 / 4.8

لقد قمت بتحديث المواصفات إذا كان أي شخص يريد التعليق

PureWeen لا ولكني آمل عندما تعمل على هذا أن تنشر دفق Twitch حتى نتمكن من التأكد من ضبطه 👍

سأعمل على هذا من أجل 4.7 / 4.8
لقد قمت بتحديث المواصفات إذا كان أي شخص يريد التعليق

آسف على السؤال الغبي: أين أجد المواصفات وأقرأها؟

ncarandini لقد قمت للتو بتحديث الوصف الخاص بهذه المشكلة بالمواصفات

نعم شكرا!

أعتقد أنني وجدت حلاً لهذا (في الوقت الحالي).
افعل هذا:

  • أعطِ flyoutem أو العناصر اسمًا ، على سبيل المثال
    <FlyoutItem Title="Self Review" x:Name="fiSelf"> <FlyoutItem.Icon> <FontImageSource FontFamily="{StaticResource sapcIconFont}" Glyph="{StaticResource IconUser}" Color="{StaticResource IconColor}"/> </FlyoutItem.Icon> <ShellContent> <viewsAssess:StartSelfPage /> </ShellContent> </FlyoutItem>

  • تجاوز OnBindingContextChanged في AppShell.cs ، وأضف رمزًا للتحقق من الشرط لإخفائه وإظهاره ، ثم استدع طريقة المسح في خاصية العناصر في flyitem
    protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); if(App.IsIntern) { fiAssess.Items.Clear(); fiPeer.Items.Clear(); fiSelf.Items.Clear(); fiVerifications.Items.Clear(); } }

يعمل لدي

تم إغلاقه بواسطة # 10980

لا يزال هذا يتصرف بشكل غريب ، فكلما قمنا بتغيير الخاصية IsVisible ديناميكيًا على BaseShellItem ، فسيتم فقد تصميم ShellContent مرة تلو الأخرى. يبدو أن دفع صفحة أعلى محتوى الصدفة ثم ظهورها يؤدي إلى إصلاحه.

من الأمثلة على ذلك أن يكون لديك صفحتان ، ويحتوي shell content X على زر يغير خاصية منطقية مرتبطة بخاصية IsVisible في محتوى shell Y

GeorgeVelikov هل يمكنك تسجيل مشكلة؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات