Вставить кнопку в UWP NavigationViewItem - PullRequest
0 голосов
/ 14 января 2019

Я хочу использовать NavigationView в качестве навигации по вкладкам для моего приложения UWP, поскольку оно имеет соответствующий стиль и хорошо справляется с переполнением.

Теперь я хочу добавить кнопку к каждому NavigationViewItem справа от ярлыка. Эта кнопка должна быть видна только при выборе предмета.

Я добился добавления кнопки в приведенном ниже коде, но не могу понять, как скрыть кнопку, когда вкладка не выбрана. Я пытался привязать кнопку к bool на моей модели данных, для которой я установил true на ItemInvoked, но это не сработало.

<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 мне больше подойдет.

Заранее спасибо.

Edit: Я уже пробовал

<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();
}

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вместо Bindings.Update вы должны реализовать INotifyPropertyChanged в своем классе TabNavigationItem и запустить событие PropertyChanged в установщике свойств Selected. Таким образом, он должен уведомить пользовательский интерфейс и правильно обновить видимость кнопки. Также не забудьте отменить выбор всех других предметов.

0 голосов
/ 14 января 2019

вы можете скрыть кнопку с помощью свойства видимости. Я бы создал конвертер для этой задачи, который принимает bool и возвращает видимое или свернутое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...