Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/MainDemo.Wpf/Domain/TabsViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace MaterialDesignDemo.Domain;

internal class TabsViewModel : ViewModelBase
internal partial class TabsViewModel : ObservableObject
{
public ObservableCollection<CustomTab> CustomTabs { get; }

public List<int> LongList { get; }
public CustomTab? SelectedTab { get; set; }

public string? VeryLongText { get; set; } = @"
Expand Down Expand Up @@ -47,6 +47,8 @@ public TabsViewModel()
CustomContent = "Custom content 3",
},
};

LongList = Enumerable.Range(1, 20).ToList();
}

}
Expand Down
82 changes: 82 additions & 0 deletions src/MainDemo.Wpf/Tabs.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -755,5 +755,87 @@
</materialDesign:Card>
</smtx:XamlDisplay>

<Border Width="720"
BorderBrush="{DynamicResource MaterialDesign.Brush.Primary}"
BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="50" />
<ColumnDefinition Width="2" />
<ColumnDefinition Width="*" MinWidth="50" />
</Grid.ColumnDefinitions>

<materialDesign:ColorZone Grid.ColumnSpan="2"
Padding="8"
Mode="PrimaryMid">
<TextBlock Text="materialDesign:TabAssist.HeaderBehavior=&quot;Scrolling&quot;" />
</materialDesign:ColorZone>

<materialDesign:ColorZone Grid.Column="2"
Padding="8"
Mode="PrimaryMid">
<TextBlock Text="materialDesign:TabAssist.HeaderBehavior=&quot;Wrapping&quot;" />
</materialDesign:ColorZone>

<smtx:XamlDisplay Grid.Row="1"
Grid.Column="0"
Margin="16"
UniqueKey="tabs_tabAssist_1">
<TabControl materialDesign:TabAssist.HeaderBehavior="Scrolling"
ItemsSource="{Binding LongList}"
Style="{StaticResource MaterialDesignTabControl}">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ., StringFormat=Header {0}}" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBlock Margin="10"
FontSize="18"
Text="{Binding ., StringFormat=Content {0}}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</smtx:XamlDisplay>

<GridSplitter Grid.RowSpan="2"
Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />

<smtx:XamlDisplay Grid.Row="1"
Grid.Column="2"
Margin="16"
UniqueKey="tabs_tabAssist_2">
<TabControl materialDesign:TabAssist.HeaderBehavior="Wrapping"
ItemsSource="{Binding LongList}"
Style="{StaticResource MaterialDesignTabControl}">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ., StringFormat=Header {0}}" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBlock Margin="10"
FontSize="18"
Text="{Binding ., StringFormat=Content {0}}" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</smtx:XamlDisplay>

</Grid>
</Border>

</StackPanel>
</UserControl>
15 changes: 15 additions & 0 deletions src/MaterialDesignThemes.Wpf/TabAssist.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
namespace MaterialDesignThemes.Wpf;

public enum TabControlHeaderBehavior
{
Scrolling,
Wrapping
}
public static class TabAssist
{
public static readonly DependencyProperty HasFilledTabProperty = DependencyProperty.RegisterAttached(
Expand Down Expand Up @@ -54,4 +59,14 @@ public static void SetTabHeaderCursor(DependencyObject obj, Cursor value)

public static readonly DependencyProperty TabHeaderCursorProperty =
DependencyProperty.RegisterAttached("TabHeaderCursor", typeof(Cursor), typeof(TabAssist), new PropertyMetadata(Cursors.Hand));

public static TabControlHeaderBehavior GetHeaderBehavior(DependencyObject obj)
=> (TabControlHeaderBehavior)obj.GetValue(HeaderBehaviorProperty);

public static void SetHeaderBehavior(DependencyObject obj, TabControlHeaderBehavior value)
=> obj.SetValue(HeaderBehaviorProperty, value);

public static readonly DependencyProperty HeaderBehaviorProperty =
DependencyProperty.RegisterAttached("HeaderBehavior", typeof(TabControlHeaderBehavior), typeof(TabAssist),
new PropertyMetadata(TabControlHeaderBehavior.Scrolling));
}
Loading
Loading