Xamarin.forms: [ν–₯상] FlyoutItem.IsVisible, Tab.IsVisible, BaseShellItem.IsVisible μΆ”κ°€

에 λ§Œλ“  2019λ…„ 02μ›” 13일  Β·  26μ½”λ©˜νŠΈ  Β·  좜처: xamarin/Xamarin.Forms

μš”μ•½

μ—°κ²°λœ 속성을 μ œκ³΅ν•˜μ—¬ μ‚¬μš©μžκ°€ 무언가가 ν”ŒλΌμ΄μ•„μ›ƒμ— ν‘œμ‹œλ˜λŠ”μ§€ μ•„λ‹ˆλ©΄ TabBar에 ν‘œμ‹œλ˜λŠ”μ§€λ₯Ό 보닀 μ§μ ‘μ μœΌλ‘œ μ •μ˜ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

ν–₯ν›„ API μ œμ•ˆ

μ‚¬μš©μžκ°€ FlyoutDisplayOptions="AsMultipleItems" λ₯Ό μ‚¬μš©ν•  λ•Œ μƒμœ„ ν•­λͺ©μ„ ν—€λ”λ‘œ ν‘œμ‹œν•˜λ„λ‘ 선택할 수 μžˆλ„λ‘ μ˜΅μ…˜μ„ μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν™•μž₯ μ»¨νŠΈλ‘€μ„ μ‚¬μš©ν•˜μ—¬ 섀정도 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

API

```C#
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.IsVisible

μ‚¬μš©μžλŠ” ν™”λ©΄μ˜ 탭을 λ°˜μ˜ν•˜μ§€ μ•ŠλŠ” ν”ŒλΌμ΄μ•„μ›ƒμ„ μ›ν•©λ‹ˆλ‹€.

<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 μš”μ†Œμ— μžˆλŠ” κ²½μš°μ—λ„ 2개의 ν”ŒλΌμ΄μ•„μ›ƒ ν•­λͺ©μ„ λ Œλ”λ§ν•©λ‹ˆλ‹€.

  • ν•­λͺ© 1
  • ν•­λͺ© 2

μ˜λ„λœ μ‚¬μš© 사둀

λ‚΄κ°€ 염두에 λ‘” μ‚¬μš© μ‚¬λ‘€λŠ” μ‚¬μš©μžκ°€ 앱을 ν”„λ¦¬λ―Έμ—„μœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œν•  수 μžˆλ„λ‘ 햄버거 메뉴에 ν•­λͺ©μ„ λ‘λŠ” κ²ƒμž…λ‹ˆλ‹€. μ‚¬μš©μžκ°€ ν•­λͺ©μ„ μ—…κ·Έλ ˆμ΄λ“œν•˜λ©΄ 더 이상 ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λΆ€λͺ¨: #2415

shell in-progress high impact proposal-accepted enhancement βž•

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈλ₯Ό 받을 수 μžˆμŠ΅λ‹ˆκΉŒ? (정말, μ •λ§λ‘œ 이것을 μ›ν•©λ‹ˆλ‹€!)

λͺ¨λ“  26 λŒ“κΈ€

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

@PureWeen Xam Dev Summitμ—μ„œ 이것을 μ‚¬μš©ν•˜λŠ” 것을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이것이 Pre λ˜λŠ” 아직 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

또 λ‹€λ₯Έ μ˜λ„λœ μ‚¬μš© μ‚¬λ‘€λŠ” ν•œ μ„ΈνŠΈμ˜ κΈ°λŠ₯(자주 μ‚¬μš©ν•˜λŠ”)이 ν•˜λ‹¨ νƒ­ ν‘œμ‹œμ€„μ— ν‘œμ‹œλ˜μ–΄μ•Ό ν•˜κ³  λ‹€λ₯Έ κΈ°λŠ₯ μ„ΈνŠΈ(μ„€μ •, ꡬ맀 볡원, 도움말 λ“±)κ°€ 햄버거 λ©”λ‰΄μ—μ„œ μ•‘μ„ΈμŠ€ κ°€λŠ₯ν•΄μ•Ό ν•˜λŠ” κ²½μš°μž…λ‹ˆλ‹€. 이것이 이미 κ°€λŠ₯ν•œ 경우 μ•Œλ €μ£Όμ‹­μ‹œμ˜€.

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈλ₯Ό 받을 수 μžˆμŠ΅λ‹ˆκΉŒ? (정말, μ •λ§λ‘œ 이것을 μ›ν•©λ‹ˆλ‹€!)

좩돌

이거 μ§„μ§œ ν•„μš”ν•΄

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  μ—…λ°μ΄νŠΈ? μš°λ¦¬λŠ” 이것이 정말 ν•„μš”ν•©λ‹ˆλ‹€.

이에 λŒ€ν•œ μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μ•„μ£Ό μž‘μ€ 앱을 λΉŒλ“œν•˜μ§€ μ•ŠλŠ” ν•œ Shell은 거의 μ“Έλͺ¨κ°€ μ—†μŠ΅λ‹ˆλ‹€. 이것이 μ—†μœΌλ©΄ κΆŒν•œμ„ μ„€μ •ν•˜κ±°λ‚˜ ν”ŒλΌμ΄μ•„μ›ƒμ—μ„œ μ›ν•˜μ§€ μ•ŠλŠ” νŽ˜μ΄μ§€λ₯Ό 숨길 수 μ—†μŠ΅λ‹ˆλ‹€. 이것이 μ§€κΈˆ μš°μ„ μˆœμœ„κ°€ μ•„λ‹Œ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

당신이 μ˜³μŠ΅λ‹ˆλ‹€ @brepetti
μ—¬κΈ°μ„œ μ œκ°€ λ†“μΉ˜κ³  μžˆλŠ” 뢀뢄이 μžˆλŠ”μ§€ κΆκΈˆν•©λ‹ˆλ‹€...

@rodrigojuarez @brepetti

웃긴 뢀뢄은 μž‘λ…„μ— XDSμ—μ„œ 곧 λ‚˜μ˜¬ μ•„μ΄ν…œμœΌλ‘œ ν™”μ œκ°€ λ˜μ—ˆλ˜ 뢀뢄인데.. λ³΄μ—¬μ£ΌκΈ°κΉŒμ§€ ν•˜λ”κ΅°μš”.

탐색 μŠ€νƒμ„ μ²˜λ¦¬ν•˜λŠ” 방법 λ•Œλ¬Έμ— 이것이 μ•„λ§ˆλ„ μ°¨λ‹¨κΈ°λ‘œ 끝났을 것이라고 μƒκ°ν•©λ‹ˆλ‹€. XDS에 ν‘œμ‹œλœ μ˜ˆμ œκ°€ λŒ€λΆ€λΆ„ μ‚¬μš©μž 지정/μž¬κ΅¬μΆ•λœ 탐색 μŠ€νƒμ„ μ‚¬μš©ν•˜κ³  μžˆλ‹€λŠ” 것을 μ•Œκ³  있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

ShellContent ν•­λͺ©μ„ μˆ˜λ™μœΌλ‘œ 생성(μΆ”κ°€, 제거)ν•˜μ—¬ μˆ˜λ™ ν•΄κ²° λ°©λ²•μœΌλ‘œ TabBar Top Tabsμ—μ„œ μž‘λ™ν•˜λ„λ‘ κ΄€λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. Xamarin.Forms 4.6μ—μ„œλŠ” 이제 iOSμ—μ„œλ„ μž‘λ™ν•©λ‹ˆλ‹€(4.6μ—μ„œ 1일 전에 μˆ˜μ •λ¨).

햄버거 λ©”λ‰΄μ—μ„œλ„ μž‘λ™ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

@malte1989 예, μš°λ¦¬λŠ” μ‰˜ λΉ„μ£Όμ–Ό νŠΈλ¦¬μ— μžˆλŠ” μ‰˜ μ•„μ΄ν…œμ— λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

@malte1989 예제 μ½”λ“œλ₯Ό μ œκ³΅ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@malte1989 예제 μ½”λ“œλ₯Ό μ œκ³΅ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

λ¬Όλ‘ , λ‚˜λŠ” 내일 λ‚΄ tabbar μ†”λ£¨μ…˜μ— λŒ€ν•œ μ½”λ“œλ₯Ό κ²Œμ‹œν•  κ²ƒμž…λ‹ˆλ‹€.

@자카λ₯΄510

μ•±μ‰˜.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>

μ•±μ‰˜.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 μ•„λ‹ˆμš”. ν•˜μ§€λ§Œ 이 μž‘μ—…μ„ ν•  λ•Œ νŠΈμœ„μΉ˜ μŠ€νŠΈλ¦Όμ„ κ²Œμ‹œν•˜μ—¬ 확인할 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€. πŸ‘

4.7/4.8μ—μ„œ μž‘μ—…ν•˜κ² μŠ΅λ‹ˆλ‹€.
λŒ“κΈ€μ„ 달고 싢은 μ‚¬λžŒμ΄ 있으면 사양을 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

λ©μ²­ν•œ μ§ˆλ¬Έμ— μ£„μ†‘ν•©λ‹ˆλ‹€. 사양을 μ°Ύκ³  읽을 수 μžˆλŠ” 곳은 μ–΄λ””μΈκ°€μš”?

@ncarandini 방금 μ‚¬μ–‘μœΌλ‘œ 이 λ¬Έμ œμ— λŒ€ν•œ μ„€λͺ…을 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

예, κ°μ‚¬ν•©λ‹ˆλ‹€!

(ν˜„μž¬λ‘œμ„œλŠ”) 이에 λŒ€ν•œ ν•΄κ²° 방법을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
이 μž‘μ—…μ„ μˆ˜ν–‰:

  • κ·€ν•˜μ˜ ν”ŒλΌμ΄μ•„μ›ƒ ν•­λͺ© λ˜λŠ” ν•­λͺ©μ— 이름을 μ§€μ •ν•˜μ‹­μ‹œμ˜€.
    <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>

  • AppShell.csμ—μ„œ OnBindingContextChangedλ₯Ό μž¬μ •μ˜ν•˜κ³  숨기고 ν‘œμ‹œν•  쑰건을 ν™•μΈν•˜λŠ” μ½”λ“œλ₯Ό μΆ”κ°€ν•œ λ‹€μŒ ν”ŒλΌμ΄ ν•­λͺ©μ˜ Items μ†μ„±μ—μ„œ Clear λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.
    protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); if(App.IsIntern) { fiAssess.Items.Clear(); fiPeer.Items.Clear(); fiSelf.Items.Clear(); fiVerifications.Items.Clear(); } }

λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™

#10980에 μ˜ν•΄ 폐쇄

BaseShellItem의 IsVisible 속성을 λ™μ μœΌλ‘œ λ³€κ²½ν•  λ•Œλ§ˆλ‹€ ShellContent의 μŠ€νƒ€μΌμ΄ κ³„μ†ν•΄μ„œ μ†μ‹€λ©λ‹ˆλ‹€. μ…Έ μ½˜ν…μΈ  μœ„μ— νŽ˜μ΄μ§€λ₯Ό 밀어넣은 λ‹€μŒ νŒμ—…ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 2νŽ˜μ΄μ§€κ°€ μžˆλŠ” 경우 μ…Έ μ½˜ν…μΈ  Xμ—λŠ” μ…Έ μ½˜ν…μΈ  Y의 IsVisible 속성에 λ°”μΈλ”©λœ λΆ€μšΈ 속성을 λ³€κ²½ν•˜λŠ” λ²„νŠΌμ΄ μžˆμŠ΅λ‹ˆλ‹€.

@GeorgeVelikov 문제λ₯Ό 기둝할 수 μžˆμŠ΅λ‹ˆκΉŒ?

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰