2017-05-01 3 views
0

私は以下のxaml構造を持っています。UWP Template10 "IsOpen"メニューのFontIcon要素を隠す

<Controls:HamburgerMenu x:Name="MyHamburgerMenu"> 
    <Controls:HamburgerMenu.PrimaryButtons> 
    <Controls:HamburgerButtonInfo x:Name="searchButton"> 
     <FontIcon x:Name="searchButtonIcon" Width="48" 
            Height="48" 
            Glyph="&#xE094;" 
            Visibility="{Binding IsOpen, ???"/> 
     <AutoSuggestBox PlaceholderText="Search" QueryIcon="Find"/> 
    <Controls:HamburgerButtonInfo x:Name="searchButton"> 
    </Controls:HamburgerMenu.PrimaryButtons> 
</Controls:HamburgerMenu> 

メニュー「IsOpen」では、FontIcon要素を折りたたむ必要があります。メニューが "IsOpen"でない場合は、FontIcon要素が表示されます。

グルーブミュージックアプリはこのような動作をしています(groove music app with opened menuの画像を参照)。 バインディングのパラメータはどれですか?ハンバーガーボタンを隠すための説明は、UWP Template10 Hide hamburger button when menu is openに記載されている。

私はそれがtemplate10の動作だと思います。私はtemplate10のShell.xamlページ内で以下を試しました。 TXT-2テキストブロックが空であるのに対し、TXT-1

<Grid> 
    <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <TextBlock x:Name="txt-1" Text="{Binding IsOpen, ElementName=MyHamburgerMenu}" Grid.Row="0"/> 
    <Controls:HamburgerMenu x:Name="MyHamburgerMenu" Grid.Row="1"> 
    <Controls:HamburgerMenu.PrimaryButtons> 
     <Controls:HamburgerButtonInfo> 
     <TextBlock x:Name="txt-2" Text="{Binding IsOpen, ElementName=MyHamburgerMenu}"/> 
     </Controls:HamburgerButtonInfo> 
    </Controls:HamburgerMenu.PrimaryButtons> 
    </Controls:HamburgerMenu> 
</Grid> 

のTextBlockはHamburgerMenuののIsOpenプロパティの正しい状態を表示します。

答えて

0

をそれらを使用します。 バインディングをxに変更します。バインドを「MyHamburgerMenu」に参照します。

<Controls:HamburgerMenu x:Name="MyHamburgerMenu"> 
    <Controls:HamburgerMenu.PrimaryButtons> 
    <Controls:HamburgerButtonInfo x:Name="searchButton"> 
     <SymbolIcon Width="48" 
        Height="48" 
        Symbol="Find" 
        Visibility="{x:Bind MyHamburgerMenu.IsOpen, Mode=TwoWay, Converter={StaticResource BooleanToVisibilityConverter}, ConverterParameter=false}"/> 
     <AutoSuggestBox PlaceholderText="Search" QueryIcon="Find"/> 
    </Controls:HamburgerButtonInfo> 
    </Controls:HamburgerMenu.PrimaryButtons> 
</Controls:HamburgerMenu> 

とvalueconverterは問題ではありませんthat

0

あなたは、視認性

public class BooleanToVisibilityConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     return (!(bool)value) ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return value; 
    } 


} 

へのIsOpenを変換するIValueConverterを使用することができますこの記事ではIValueConvertersを説明し、どのようにそれが動作しますあなたのXAMLで

https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Data.IValueConverter

+0

のように反転可能BooleanToVisibilityConverterを使用しています。私は親のControls:HamburgerMenu.IsOpen状態に依存するFontIconの可視性プロパティを設定する方法を知りたいですか? –

+0

あなたはElementNameにバインドできるはずです。例えばVisibility = "{バインディングElementName = MyHamburgerMenu、Path = IsOpen、コンバーター= {StaticResource MyVisibilityConverter}}" /> –

+0

こんにちはKen、あなたの努力に感謝します。上記の問題の説明を拡張しました。 –