c# - 将按钮插入 NavigationViewItem UWP

标签 c# xaml uwp

我想使用 NavigationView 作为我的 UWP 应用的选项卡导航,因为它具有适当的样式并且可以很好地处理溢出。

现在我想为标签右侧的每个 NavigationViewItem 添加一个按钮。此按钮应仅在选择项目时可见。

我已经在下面的代码中实现了添加按钮,但是我不知道如何在未选择选项卡时隐藏按钮。我曾尝试将按钮绑定(bind)到我的数据模型上的 bool 值,我在 ItemInvoked 上将其设置为 true,但这没有用。

<NavigationView x:Name="NavView"
                PaneDisplayMode="Top"
                OverflowLabelMode="NoLabel"
                IsSettingsVisible="False"
                IsBackButtonVisible="Collapsed"
                MenuItemsSource="{x:Bind TabItems}">

                <NavigationView.MenuItemTemplate>
                    <DataTemplate x:DataType="models:TabNavigationItem">
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="{x:Bind Text}" VerticalAlignment="Center"></TextBlock>
                            <Viewbox Width="16" Height="16" VerticalAlignment="Center" Margin="2,0,0,0">
                                <Button Background="{StaticResource Transparent}" VerticalAlignment="Center">
                                    <FontIcon FontFamily="Segoe MDL2 Assets" Glyph="&#xE711;"></FontIcon>
                                </Button>
                            </Viewbox>
                        </StackPanel>
                    </DataTemplate>
                </NavigationView.MenuItemTemplate>
</NavigationView>

Picture of NavView

我看过 Community Toolkit TabView,但由于我自己处理所有导航,并且只需要一行可选择的项目,NavigationView 更适合我。

提前谢谢你。

编辑: 我已经试过了

<Viewbox Width="16" Height="16" VerticalAlignment="Center" Margin="2,0,0,0" Visibility="{x:Bind Selected, Converter={StaticResource BoolToVisibilityConverter}, Mode="OneWay"}">

private void NavView_OnItemInvoked(NavigationView sender, NavigationViewItemInvokedEventArgs args)
{
    if (args.InvokedItem is TabNavigationItem t)
    {
            t.Selected = true;
    }
    Bindings.Update();
}

最佳答案

您应该在 TabNavigationItem 类中实现 INotifyPropertyChanged,而不是 Bindings.Update,并在其中触发 PropertyChanged 事件Selected 属性 setter 。这样它应该通知 UI 并正确更新按钮可见性。另外,不要忘记取消选择所有其他项目。

关于c# - 将按钮插入 NavigationViewItem UWP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54181792/

相关文章:

wpf - 如何使基于 XAML 的 UI 开发变得可以忍受?

c# - UWP/C#-如何判断当前正在显示哪种类型的ViewModel

c# - 偏移矩形位置以防止重叠

c# - EF Core 选择一个由相关实体过滤的实体

wpf - 将命令绑定(bind)到 View 的 Loaded 事件

c# - 我的 Windows 应用商店应用程序在关闭后仍在 Debug模式下运行

c# - 如何在 HttpClient SendRequestAsync 中发送图像

c# - 从一组闹钟中获取第一个闹钟时间

c# - asp.net webforms 中的 DISQUS 评论

c# - X509Chain 参数如何构建在 RemoteCertificateValidationCallback 委托(delegate)中?