Skip to content

Commit 33f6bbe

Browse files
Fix for issue 2816 - Fixed template selector bug in TabItem styles (#2818)
* Fixed template selector bug in TabItem style * Fixing same issue for RailTabItem
1 parent bb8dd40 commit 33f6bbe

File tree

4 files changed

+61
-26
lines changed

4 files changed

+61
-26
lines changed

MainDemo.Wpf/Domain/TabsViewModel.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System.Collections.ObjectModel;
2+
3+
namespace MaterialDesignDemo.Domain;
4+
5+
internal class TabsViewModel : ViewModelBase
6+
{
7+
public ObservableCollection<CustomTab> CustomTabs { get; }
8+
9+
public CustomTab? SelectedTab { get; set; }
10+
11+
public TabsViewModel() =>
12+
CustomTabs = new()
13+
{
14+
new CustomTab {CustomHeader = "Custom tab 1", CustomContent = "Custom tab 1 content"},
15+
new CustomTab {CustomHeader = "Custom tab 2", CustomContent = "Custom tab 2 content"}
16+
};
17+
}
18+
19+
internal class CustomTab
20+
{
21+
public string? CustomHeader { get; set; }
22+
23+
public string? CustomContent { get; set; }
24+
}

MainDemo.Wpf/Tabs.xaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
77
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
88
xmlns:smtx="clr-namespace:ShowMeTheXAML;assembly=ShowMeTheXAML"
9+
xmlns:domain="clr-namespace:MaterialDesignDemo.Domain"
910
d:DesignHeight="4000"
1011
d:DesignWidth="1920"
12+
d:DataContext="{d:DesignInstance Type=domain:TabsViewModel, IsDesignTimeCreatable=True}"
1113
mc:Ignorable="d">
1214
<StackPanel Margin="0,0,8,8">
1315

@@ -505,5 +507,27 @@
505507
</materialDesign:Card>
506508
</smtx:XamlDisplay>
507509
</StackPanel>
510+
511+
<TextBlock
512+
Margin="0,15,0,20"
513+
Style="{StaticResource MaterialDesignHeadline5TextBlock}"
514+
Text="Custom items (and DisplayMemberPath)" />
515+
516+
<smtx:XamlDisplay Margin="0,0,0,16" UniqueKey="tabs_with_displaymemberpath">
517+
<materialDesign:Card>
518+
<TabControl
519+
ItemsSource="{Binding CustomTabs}"
520+
SelectedItem="{Binding SelectedTab}"
521+
HorizontalContentAlignment="Left"
522+
DisplayMemberPath="CustomHeader">
523+
<TabControl.ContentTemplate>
524+
<DataTemplate DataType="domain:CustomTab">
525+
<TextBlock Text="{Binding CustomContent}" FontSize="18" Margin="10" />
526+
</DataTemplate>
527+
</TabControl.ContentTemplate>
528+
</TabControl>
529+
</materialDesign:Card>
530+
</smtx:XamlDisplay>
531+
508532
</StackPanel>
509533
</UserControl>

MainDemo.Wpf/Tabs.xaml.cs

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,15 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
6-
using System.Windows;
7-
using System.Windows.Controls;
8-
using System.Windows.Data;
9-
using System.Windows.Documents;
10-
using System.Windows.Input;
11-
using System.Windows.Media;
12-
using System.Windows.Media.Imaging;
13-
using System.Windows.Navigation;
14-
using System.Windows.Shapes;
1+
using MaterialDesignDemo.Domain;
152

16-
namespace MaterialDesignDemo
3+
namespace MaterialDesignDemo;
4+
5+
/// <summary>
6+
/// Interaction logic for Tabs.xaml
7+
/// </summary>
8+
public partial class Tabs
179
{
18-
/// <summary>
19-
/// Interaction logic for Tabs.xaml
20-
/// </summary>
21-
public partial class Tabs : UserControl
10+
public Tabs()
2211
{
23-
public Tabs()
24-
{
25-
InitializeComponent();
26-
}
12+
DataContext = new TabsViewModel();
13+
InitializeComponent();
2714
}
28-
}
15+
}

MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@
266266
Content="{TemplateBinding Header}"
267267
ContentStringFormat="{TemplateBinding HeaderStringFormat}"
268268
ContentTemplate="{TemplateBinding HeaderTemplate}"
269-
ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
269+
ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
270270
Focusable="False"
271271
Opacity=".82"
272272
RecognizesAccessKey="True"
@@ -464,7 +464,7 @@
464464
Content="{TemplateBinding Header}"
465465
ContentStringFormat="{TemplateBinding HeaderStringFormat}"
466466
ContentTemplate="{TemplateBinding HeaderTemplate}"
467-
ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}"
467+
ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
468468
Focusable="False"
469469
Opacity=".52"
470470
RecognizesAccessKey="True"

0 commit comments

Comments
 (0)