【问题标题】:How to handle click events of the settings button inside a UWP NavigationView?如何处理 UWP NavigationView 中设置按钮的点击事件?
【发布时间】:2020-11-16 21:02:27
【问题描述】:

我发现官方NavigationView是在Visual Studio的较新版本中引入的,可以帮助轻松实现汉堡布局,通过将属性IsSettingsVisible设置为True,会自动出现设置按钮底部。

我的问题很简单:如何处理此设置按钮的点击事件?我找不到任何对应的属性。

<NavigationView PaneDisplayMode="LeftCompact" IsSettingsVisible="True">
    <!--I'm expecting some codes like below-->
    <NavigationView.SettingsButton Click="SettingsButton_Click"/>
</NavigationView>

【问题讨论】:

    标签: c# xaml uwp


    【解决方案1】:

    ItemInvoked 事件注册一个新方法并检查它是否是通过这样做调用的设置按钮:

    C#:

    private async void NavigationView_ItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args) {
        if (args.IsSettingsInvoked) {
            // Code here
        }
    }
    

    XAML:

    <NavigationView IsSettingsVisible="True" ItemInvoked="NavigationView_ItemInvoked">
        <!-- Your XAML -->
    </NavigationView>
    

    【讨论】:

    • 谢谢!这正是我所需要的。
    【解决方案2】:

    Ramos 回答的缺点是,设置按钮在单击时也会被选中。如果您想打开一个很可能不是适合您的解决方案的内容对话框。我发现了另一种方法:

    <NavigationView.PaneFooter>
        <Button Background="Transparent" BorderThickness="1" HorizontalAlignment="Center"
                Height="40" Width="40"
                Click="SettingsButton_OnClick">
            <SymbolIcon Symbol="Setting"/>
        </Button>
    </NavigationView.PaneFooter>
    

    还要确保使用IsSettingsVisible="False" 禁用其他设置按钮。

    注意:导航视图的默认图标大小随着时间的推移而改变并变小。将来 40 像素可能不再是正确的尺寸。当然,您可以轻松地纠正它。 Link to the issue

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多