Как установить содержимое по умолчанию в UWP TabView, когда нет или нет выбранных вкладок? - PullRequest
0 голосов
/ 31 марта 2020

Если элементы вкладки не отображаются или не выбраны, Microsoft.Toolkit.Uwp.UI.Controls.TabView отображает пустой холст.

Как изменить это?

Кажется, что TabView не имеет свойства содержимого?

РЕДАКТИРОВАТЬ:

выглядит не так просто:

https://github.com/windows-toolkit/WindowsCommunityToolkit/blob/master/Microsoft.Toolkit.Uwp.UI.Controls/TabView/TabView.cs

ln 164

...
            if (_tabContentPresenter != null)
            {
                if (SelectedItem == null)
                {
                    _tabContentPresenter.Content = null;
                    _tabContentPresenter.ContentTemplate = null;
                }
                else
                {
                    if (ContainerFromItem(SelectedItem) is TabViewItem container)
                    {
                        _tabContentPresenter.Content = container.Content;
                        _tabContentPresenter.ContentTemplate = container.ContentTemplate;
                    }
                }
            }
...

1 Ответ

1 голос
/ 31 марта 2020

Если вы хотите установить представление по умолчанию для TabView, когда у него нет вкладки, вы можете установить представление по умолчанию вручную, а затем поместить представление по умолчанию над TabView, чтобы покрыть его область содержимого. Когда вкладки нет, вы можете установить Видимость представления как Видимая, чтобы показать ее. Не рекомендуется изменять сам tabView для достижения этого. Например, MyDefaultView ниже - это заданное по умолчанию содержимое.

.xaml:

<Grid>
    <controls:TabView x:Name="MyTabView" TabItemsSource="{x:Bind Lists,Mode=OneWay}">
    </controls:TabView>

    <StackPanel Background="AliceBlue" Margin="0,40,0,0" x:Name="MyDefaultView">
        <Image Source="Assets/StoreLogo.png" Width="300" Height="300"></Image>
        <TextBlock TextAlignment="Center">welcome, please add tabs</TextBlock>
    </StackPanel>
</Grid>

.cs:

if (Lists.Count > 0)
{
    MyDefaultView.Visibility = Visibility.Collapsed;
}
else 
{
    MyDefaultView.Visibility = Visibility.Visible;
}
...