mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-04-16 06:06:36 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e0d7a46e50 | ||
|
|
d1b862ef85 | ||
|
|
0e9dbdd528 | ||
|
|
555ecf16d9 |
@@ -12,7 +12,7 @@
|
|||||||
<ScrollViewer DockPanel.Dock="Right" Width="260">
|
<ScrollViewer DockPanel.Dock="Right" Width="260">
|
||||||
<StackPanel Margin="12" Spacing="8">
|
<StackPanel Margin="12" Spacing="8">
|
||||||
<TextBlock Text="Configuration" FontWeight="SemiBold" FontSize="16" />
|
<TextBlock Text="Configuration" FontWeight="SemiBold" FontSize="16" />
|
||||||
<TextBlock Text="Navigation" FontWeight="SemiBold" FontSize="13" />
|
<TextBlock Text="Navigation" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
|
||||||
<Button Content="Push Page"
|
<Button Content="Push Page"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
@@ -26,6 +26,20 @@
|
|||||||
|
|
||||||
<Separator />
|
<Separator />
|
||||||
|
|
||||||
|
<TextBlock Text="Modal Actions" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
<Button Name="PushModalButton"
|
||||||
|
Content="Push Modal"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPushModal" />
|
||||||
|
<Button Name="PopModalButton"
|
||||||
|
Content="Pop Modal"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPopModal" />
|
||||||
|
<Button Name="PopAllModalsButton"
|
||||||
|
Content="Pop All Modals"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Click="OnPopAllModals" />
|
||||||
|
|
||||||
<TextBlock Text="Options" FontWeight="SemiBold" FontSize="14" />
|
<TextBlock Text="Options" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
|
||||||
<CheckBox Name="HasNavBarCheck"
|
<CheckBox Name="HasNavBarCheck"
|
||||||
@@ -35,20 +49,38 @@
|
|||||||
<CheckBox Name="HasBackButtonCheck"
|
<CheckBox Name="HasBackButtonCheck"
|
||||||
Content="Has Back Button"
|
Content="Has Back Button"
|
||||||
IsChecked="True"
|
IsChecked="True"
|
||||||
IsCheckedChanged="OnHasBackButonChanged" />
|
IsCheckedChanged="OnHasBackButtonChanged" />
|
||||||
|
<CheckBox Name="HasShadowCheck"
|
||||||
|
Content="Has Shadow"
|
||||||
|
IsChecked="True"
|
||||||
|
IsCheckedChanged="OnHasShadowChanged" />
|
||||||
|
<CheckBox Name="large" Content="Large" />
|
||||||
|
|
||||||
|
<Separator />
|
||||||
|
|
||||||
|
<TextBlock Text="Modal Transition" FontWeight="SemiBold" FontSize="14" />
|
||||||
|
<ComboBox Name="TransitionCombo"
|
||||||
|
SelectedIndex="0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
SelectionChanged="OnTransitionChanged">
|
||||||
|
<ComboBoxItem Content="Slide from Bottom" />
|
||||||
|
<ComboBoxItem Content="CrossFade" />
|
||||||
|
<ComboBoxItem Content="None" />
|
||||||
|
</ComboBox>
|
||||||
|
|
||||||
<Separator />
|
<Separator />
|
||||||
|
|
||||||
<TextBlock Text="Status" FontWeight="SemiBold" FontSize="14" />
|
<TextBlock Text="Status" FontWeight="SemiBold" FontSize="14" />
|
||||||
<TextBlock Name="StatusText"
|
<TextBlock Name="StatusText"
|
||||||
Text="Depth: 1"
|
Text="Depth: 1"
|
||||||
Opacity="0.7"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<TextBlock Name="HeaderText"
|
<TextBlock Name="HeaderText"
|
||||||
Text="Current: Home"
|
Text="Current: Home"
|
||||||
Opacity="0.7"
|
|
||||||
TextWrapping="Wrap" />
|
TextWrapping="Wrap" />
|
||||||
<ToggleSwitch Content="Large" Name="large" />
|
<TextBlock Name="ModalText"
|
||||||
|
Text="Modals: 0"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
using System;
|
||||||
|
using Avalonia.Animation;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
|
|
||||||
@@ -6,6 +8,7 @@ namespace Semi.Avalonia.Demo.Pages;
|
|||||||
public partial class NavigationPageDemo : UserControl
|
public partial class NavigationPageDemo : UserControl
|
||||||
{
|
{
|
||||||
private int _pageCount;
|
private int _pageCount;
|
||||||
|
private int _modalCount;
|
||||||
|
|
||||||
public NavigationPageDemo()
|
public NavigationPageDemo()
|
||||||
{
|
{
|
||||||
@@ -15,7 +18,7 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
|
|
||||||
private async void OnLoaded(object? sender, RoutedEventArgs e)
|
private async void OnLoaded(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
await DemoNav.PushAsync(NavigationDemoHelper.MakePage("Home", "Welcome!\nUse the buttons to push and pop pages.", 0), null);
|
await DemoNav.PushAsync(NavigationDemoHelper.MakePage("Home", "Welcome!\nUse the buttons to push and pop pages/modals.", 0), null);
|
||||||
UpdateStatus();
|
UpdateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,6 +45,27 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
UpdateStatus();
|
UpdateStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void OnPushModal(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_modalCount++;
|
||||||
|
var modal = NavigationDemoHelper.MakePage($"Modal {_modalCount}", "This page was presented modally.\nTap 'Pop Modal' to dismiss.", _modalCount);
|
||||||
|
await DemoNav.PushModalAsync(modal);
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPopModal(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await DemoNav.PopModalAsync();
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void OnPopAllModals(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
await DemoNav.PopAllModalsAsync();
|
||||||
|
_modalCount = 0;
|
||||||
|
UpdateStatus();
|
||||||
|
}
|
||||||
|
|
||||||
private void OnHasNavBarChanged(object? sender, RoutedEventArgs e)
|
private void OnHasNavBarChanged(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (DemoNav == null)
|
if (DemoNav == null)
|
||||||
@@ -50,7 +74,7 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
NavigationPage.SetHasNavigationBar(DemoNav.CurrentPage, HasNavBarCheck.IsChecked == true);
|
NavigationPage.SetHasNavigationBar(DemoNav.CurrentPage, HasNavBarCheck.IsChecked == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnHasBackButonChanged(object? sender, RoutedEventArgs e)
|
private void OnHasBackButtonChanged(object? sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (DemoNav == null)
|
if (DemoNav == null)
|
||||||
return;
|
return;
|
||||||
@@ -58,9 +82,30 @@ public partial class NavigationPageDemo : UserControl
|
|||||||
NavigationPage.SetHasBackButton(DemoNav.CurrentPage, HasBackButtonCheck.IsChecked == true);
|
NavigationPage.SetHasBackButton(DemoNav.CurrentPage, HasBackButtonCheck.IsChecked == true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnHasShadowChanged(object? sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DemoNav == null)
|
||||||
|
return;
|
||||||
|
if (DemoNav.CurrentPage != null)
|
||||||
|
DemoNav.HasShadow = HasShadowCheck.IsChecked == true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnTransitionChanged(object? sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (DemoNav == null)
|
||||||
|
return;
|
||||||
|
DemoNav.ModalTransition = TransitionCombo.SelectedIndex switch
|
||||||
|
{
|
||||||
|
1 => new CrossFade(TimeSpan.FromMilliseconds(250)),
|
||||||
|
2 => null,
|
||||||
|
_ => new PageSlide(TimeSpan.FromMilliseconds(300), PageSlide.SlideAxis.Vertical)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private void UpdateStatus()
|
private void UpdateStatus()
|
||||||
{
|
{
|
||||||
StatusText.Text = $"Depth: {DemoNav.StackDepth}";
|
StatusText.Text = $"Depth: {DemoNav.StackDepth}";
|
||||||
HeaderText.Text = $"Current: {DemoNav.CurrentPage?.Header ?? "(none)"}";
|
HeaderText.Text = $"Current: {DemoNav.CurrentPage?.Header ?? "(none)"}";
|
||||||
|
ModalText.Text = $"Modals: {DemoNav.ModalStack.Count}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<TabbedPage Name="DemoTabs"
|
<TabbedPage Name="DemoTabs"
|
||||||
TabPlacement="Top"
|
TabPlacement="Top"
|
||||||
SelectionChanged="OnSelectionChanged">
|
SelectionChanged="OnSelectionChanged">
|
||||||
<ContentPage Header="Home">
|
<ContentPage Icon="{DynamicResource SemiIconHome}" Header="Home">
|
||||||
<StackPanel Margin="16" Spacing="8">
|
<StackPanel Margin="16" Spacing="8">
|
||||||
<TextBlock Text="Home Tab" FontSize="24" FontWeight="Bold" />
|
<TextBlock Text="Home Tab" FontSize="24" FontWeight="Bold" />
|
||||||
<TextBlock Text="Welcome to the Home tab. This is a TabbedPage sample."
|
<TextBlock Text="Welcome to the Home tab. This is a TabbedPage sample."
|
||||||
@@ -59,14 +59,14 @@
|
|||||||
TextWrapping="Wrap" Opacity="0.7" />
|
TextWrapping="Wrap" Opacity="0.7" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
<ContentPage Header="Search">
|
<ContentPage Icon="{DynamicResource SemiIconSearch}" Header="Search">
|
||||||
<StackPanel Margin="16" Spacing="8">
|
<StackPanel Margin="16" Spacing="8">
|
||||||
<TextBlock Text="Search Tab" FontSize="24" FontWeight="Bold" />
|
<TextBlock Text="Search Tab" FontSize="24" FontWeight="Bold" />
|
||||||
<TextBox PlaceholderText="Type to search..." />
|
<TextBox PlaceholderText="Type to search..." />
|
||||||
<TextBlock Text="Search results will appear here." Opacity="0.7" />
|
<TextBlock Text="Search results will appear here." Opacity="0.7" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</ContentPage>
|
</ContentPage>
|
||||||
<ContentPage Header="Settings">
|
<ContentPage Icon="{DynamicResource SemiIconSetting}" Header="Settings">
|
||||||
<StackPanel Margin="16" Spacing="8">
|
<StackPanel Margin="16" Spacing="8">
|
||||||
<TextBlock Text="Settings Tab" FontSize="24" FontWeight="Bold" />
|
<TextBlock Text="Settings Tab" FontSize="24" FontWeight="Bold" />
|
||||||
<CheckBox Content="Enable notifications" />
|
<CheckBox Content="Enable notifications" />
|
||||||
|
|||||||
@@ -8,6 +8,26 @@
|
|||||||
<ControlTheme x:Key="{x:Type NavigationPage}" TargetType="NavigationPage">
|
<ControlTheme x:Key="{x:Type NavigationPage}" TargetType="NavigationPage">
|
||||||
<Setter Property="Background" Value="Transparent" />
|
<Setter Property="Background" Value="Transparent" />
|
||||||
<Setter Property="BarHeight" Value="{DynamicResource NavigationPageBarMinHeight}" />
|
<Setter Property="BarHeight" Value="{DynamicResource NavigationPageBarMinHeight}" />
|
||||||
|
<Setter Property="PageTransition">
|
||||||
|
<PageSlide Duration="0:0:0.3" Orientation="Horizontal" FillMode="Forward">
|
||||||
|
<PageSlide.SlideInEasing>
|
||||||
|
<SplineEasing X1="0.16" Y1="1" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideInEasing>
|
||||||
|
<PageSlide.SlideOutEasing>
|
||||||
|
<SplineEasing X1="0.2" Y1="0.85" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideOutEasing>
|
||||||
|
</PageSlide>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="ModalTransition">
|
||||||
|
<PageSlide Duration="0:0:0.25" Orientation="Vertical" FillMode="Forward">
|
||||||
|
<PageSlide.SlideInEasing>
|
||||||
|
<SplineEasing X1="0.16" Y1="1" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideInEasing>
|
||||||
|
<PageSlide.SlideOutEasing>
|
||||||
|
<SplineEasing X1="0.2" Y1="0.85" X2="0.3" Y2="1" />
|
||||||
|
</PageSlide.SlideOutEasing>
|
||||||
|
</PageSlide>
|
||||||
|
</Setter>
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="NavigationPage">
|
<ControlTemplate TargetType="NavigationPage">
|
||||||
<Panel ClipToBounds="True">
|
<Panel ClipToBounds="True">
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
<DockPanel HorizontalSpacing="{DynamicResource TabItemIconHeaderSpacing}">
|
<DockPanel HorizontalSpacing="{DynamicResource TabItemIconHeaderSpacing}">
|
||||||
<ContentPresenter
|
<ContentPresenter
|
||||||
Name="PART_IconPresenter"
|
Name="PART_IconPresenter"
|
||||||
DockPanel.Dock="Left"
|
|
||||||
Content="{TemplateBinding Icon}"
|
Content="{TemplateBinding Icon}"
|
||||||
ContentTemplate="{TemplateBinding IconTemplate}"
|
ContentTemplate="{TemplateBinding IconTemplate}"
|
||||||
IsVisible="{Binding $self.Content, Converter={x:Static ObjectConverters.IsNotNull}}">
|
IsVisible="{Binding $self.Content, Converter={x:Static ObjectConverters.IsNotNull}}">
|
||||||
@@ -61,6 +60,10 @@
|
|||||||
<Setter Property="RecognizesAccessKey" Value="True" />
|
<Setter Property="RecognizesAccessKey" Value="True" />
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
|
||||||
|
<Setter Property="DockPanel.Dock" Value="Left" />
|
||||||
|
</Style>
|
||||||
|
|
||||||
<Style Selector="^:selected">
|
<Style Selector="^:selected">
|
||||||
<Style Selector="^ /template/ ContentPresenter#PART_HeaderPresenter">
|
<Style Selector="^ /template/ ContentPresenter#PART_HeaderPresenter">
|
||||||
<Setter Property="FontWeight" Value="{DynamicResource TabItemSelectedFontWeight}" />
|
<Setter Property="FontWeight" Value="{DynamicResource TabItemSelectedFontWeight}" />
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
xmlns="https://github.com/avaloniaui"
|
xmlns="https://github.com/avaloniaui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
<Design.PreviewWith>
|
<Design.PreviewWith>
|
||||||
<TabbedPage Width="400" Height="300" />
|
<TabbedPage Width="400" Height="800" TabPlacement="Bottom">
|
||||||
|
<ContentPage Icon="{DynamicResource SemiIconHome}" Header="Home" />
|
||||||
|
<ContentPage Icon="{DynamicResource SemiIconSearch}" Header="Search" />
|
||||||
|
<ContentPage Icon="{DynamicResource SemiIconSetting}" Header="Settings" />
|
||||||
|
</TabbedPage>
|
||||||
</Design.PreviewWith>
|
</Design.PreviewWith>
|
||||||
|
|
||||||
<ControlTheme x:Key="{x:Type TabbedPage}" TargetType="TabbedPage">
|
<ControlTheme x:Key="{x:Type TabbedPage}" TargetType="TabbedPage">
|
||||||
@@ -11,27 +15,91 @@
|
|||||||
<TabControl
|
<TabControl
|
||||||
Name="PART_TabControl"
|
Name="PART_TabControl"
|
||||||
Background="{TemplateBinding Background}"
|
Background="{TemplateBinding Background}"
|
||||||
Theme="{StaticResource LineTabControl}" />
|
Theme="{StaticResource LineTabControl}">
|
||||||
|
<TabControl.ItemContainerTheme>
|
||||||
|
<ControlTheme
|
||||||
|
BasedOn="{StaticResource LineTabItem}"
|
||||||
|
TargetType="TabItem">
|
||||||
|
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
|
||||||
|
<Setter Property="TabItem.Margin" Value="0" />
|
||||||
|
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
|
||||||
|
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
|
||||||
|
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
|
||||||
|
<Setter Property="DockPanel.Dock" Value="Top" />
|
||||||
|
</Style>
|
||||||
|
</Style>
|
||||||
|
</ControlTheme>
|
||||||
|
</TabControl.ItemContainerTheme>
|
||||||
|
<TabControl.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</TabControl.ItemsPanel>
|
||||||
|
</TabControl>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter>
|
</Setter>
|
||||||
</ControlTheme>
|
</ControlTheme>
|
||||||
|
|
||||||
<ControlTheme x:Key="CardTabbedPage" TargetType="TabbedPage">
|
<ControlTheme x:Key="CardTabbedPage" TargetType="TabbedPage">
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="TabbedPage">
|
<ControlTemplate TargetType="TabbedPage">
|
||||||
<TabControl
|
<TabControl
|
||||||
Name="PART_TabControl"
|
Name="PART_TabControl"
|
||||||
Background="{TemplateBinding Background}"
|
Background="{TemplateBinding Background}"
|
||||||
Theme="{StaticResource CardTabControl}" />
|
Theme="{StaticResource CardTabControl}">
|
||||||
|
<TabControl.ItemContainerTheme>
|
||||||
|
<ControlTheme
|
||||||
|
BasedOn="{StaticResource CardTabItem}"
|
||||||
|
TargetType="TabItem">
|
||||||
|
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
|
||||||
|
<Setter Property="TabItem.Padding" Value="8" />
|
||||||
|
<Setter Property="TabItem.Margin" Value="0" />
|
||||||
|
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
|
||||||
|
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
|
||||||
|
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
|
||||||
|
<Setter Property="DockPanel.Dock" Value="Top" />
|
||||||
|
</Style>
|
||||||
|
</Style>
|
||||||
|
</ControlTheme>
|
||||||
|
</TabControl.ItemContainerTheme>
|
||||||
|
<TabControl.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</TabControl.ItemsPanel>
|
||||||
|
</TabControl>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter>
|
</Setter>
|
||||||
</ControlTheme>
|
</ControlTheme>
|
||||||
|
|
||||||
<ControlTheme x:Key="ButtonTabbedPage" TargetType="TabbedPage">
|
<ControlTheme x:Key="ButtonTabbedPage" TargetType="TabbedPage">
|
||||||
<Setter Property="Template">
|
<Setter Property="Template">
|
||||||
<ControlTemplate TargetType="TabbedPage">
|
<ControlTemplate TargetType="TabbedPage">
|
||||||
<TabControl
|
<TabControl
|
||||||
Name="PART_TabControl"
|
Name="PART_TabControl"
|
||||||
Background="{TemplateBinding Background}"
|
Background="{TemplateBinding Background}"
|
||||||
Theme="{StaticResource ButtonTabControl}" />
|
Theme="{StaticResource ButtonTabControl}">
|
||||||
|
<TabControl.ItemContainerTheme>
|
||||||
|
<ControlTheme
|
||||||
|
BasedOn="{StaticResource ButtonTabItem}"
|
||||||
|
TargetType="TabItem">
|
||||||
|
<Style Selector="^[TabStripPlacement=Top], ^[TabStripPlacement=Bottom]">
|
||||||
|
<Setter Property="TabItem.Padding" Value="12" />
|
||||||
|
<Setter Property="TabItem.Margin" Value="0" />
|
||||||
|
<Setter Property="TabItem.HorizontalContentAlignment" Value="Center" />
|
||||||
|
<Setter Property="TabItem.VerticalContentAlignment" Value="Center" />
|
||||||
|
<Style Selector="^ /template/ ContentPresenter#PART_IconPresenter">
|
||||||
|
<Setter Property="DockPanel.Dock" Value="Top" />
|
||||||
|
</Style>
|
||||||
|
</Style>
|
||||||
|
</ControlTheme>
|
||||||
|
</TabControl.ItemContainerTheme>
|
||||||
|
<TabControl.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<UniformGrid Columns="{Binding $parent[TabControl].ItemCount}" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</TabControl.ItemsPanel>
|
||||||
|
</TabControl>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
</Setter>
|
</Setter>
|
||||||
</ControlTheme>
|
</ControlTheme>
|
||||||
|
|||||||
Reference in New Issue
Block a user