Skip to content

Commit 2740f14

Browse files
committed
update trees demo, fixes #896
1 parent 4ea5efd commit 2740f14

File tree

2 files changed

+124
-9
lines changed

2 files changed

+124
-9
lines changed

MainDemo.Wpf/Domain/TreesViewModel.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,21 @@ namespace MaterialDesignColors.WpfExample.Domain
1515
{
1616
public class TreeExampleSimpleTemplateSelector : DataTemplateSelector
1717
{
18+
public DataTemplate PlanetTemplate { get; set; }
19+
1820
public DataTemplate SolarSystemTemplate { get; set; }
1921

2022
public override DataTemplate SelectTemplate(object item, DependencyObject container)
2123
{
24+
if (item is Planet)
25+
return PlanetTemplate;
26+
2227
if (item?.ToString() == "Solar System")
2328
return SolarSystemTemplate;
2429

2530
return TreeViewAssist.SuppressAdditionalTemplate;
2631
}
27-
}
32+
}
2833

2934
public sealed class Movie
3035
{
@@ -39,6 +44,17 @@ public Movie(string name, string director)
3944
public string Director { get; }
4045
}
4146

47+
public class Planet
48+
{
49+
public string Name { get; set; }
50+
51+
public double DistanceFromSun { get; set; }
52+
53+
public double DistanceFromEarth { get; set; }
54+
55+
public double Velocity { get; set; }
56+
}
57+
4258
public sealed class MovieCategory
4359
{
4460
public MovieCategory(string name, params Movie[] movies)

MainDemo.Wpf/Trees.xaml

Lines changed: 107 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,26 @@
1111
<UserControl.Resources>
1212
<ResourceDictionary>
1313
<ResourceDictionary.MergedDictionaries>
14+
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml" />
1415
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml" />
16+
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.TextBlock.xaml" />
1517
</ResourceDictionary.MergedDictionaries>
1618
</ResourceDictionary>
1719
</UserControl.Resources>
1820
<Grid>
1921
<Grid.ColumnDefinitions>
2022
<ColumnDefinition Width="Auto"/>
2123
<ColumnDefinition Width="Auto"/>
24+
<ColumnDefinition Width="Auto"/>
2225
</Grid.ColumnDefinitions>
2326
<Grid.RowDefinitions>
2427
<RowDefinition Height="Auto" />
2528
<RowDefinition Height="Auto" />
29+
<RowDefinition Height="Auto" />
30+
<RowDefinition Height="Auto" />
2631
</Grid.RowDefinitions>
27-
<smtx:XamlDisplay Key="trees_1" Grid.Column="0" Margin="5 5 0 5" VerticalContentAlignment="Top">
32+
<TextBlock Style="{StaticResource MaterialDesignTitleTextBlock}">Basic Tree View:</TextBlock>
33+
<smtx:XamlDisplay Key="trees_1" Grid.Column="0" Grid.Row="1" VerticalContentAlignment="Top">
2834
<TreeView MinWidth="220">
2935
<TreeViewItem Header="Fruit">
3036
<TreeViewItem>
@@ -94,7 +100,11 @@
94100
<TreeViewItem Header="Empty" />
95101
</TreeView>
96102
</smtx:XamlDisplay>
97-
<smtx:XamlDisplay Key="trees_2" Grid.Column="1" VerticalAlignment="Top" Margin="5" VerticalContentAlignment="Top">
103+
104+
<TextBlock Grid.Column="1" Margin="32 0 0 0" Style="{StaticResource MaterialDesignTitleTextBlock}">MVVM/Binding:</TextBlock>
105+
<smtx:XamlDisplay Key="trees_2" Grid.Column="1" Grid.Row="1"
106+
Margin="32 0 0 0"
107+
VerticalAlignment="Top" VerticalContentAlignment="Top">
98108
<Grid MinWidth="220">
99109
<Grid.RowDefinitions>
100110
<RowDefinition Height="*"/>
@@ -141,26 +151,52 @@
141151
</materialDesign:PopupBox>
142152
</Grid>
143153
</smtx:XamlDisplay>
144-
<smtx:XamlDisplay Key="trees_3" Grid.Row="1">
154+
155+
<TextBlock Grid.Row="2" Style="{StaticResource MaterialDesignTitleTextBlock}">Additional node content, syntax 1:</TextBlock>
156+
<smtx:XamlDisplay Key="trees_3" Grid.Row="3">
145157
<TreeView>
146158
<materialDesign:TreeViewAssist.AdditionalTemplate>
147159
<DataTemplate>
148-
<TextBlock FontSize="10" Margin="8">8 planets</TextBlock>
160+
<materialDesign:ColorZone Mode="PrimaryLight" CornerRadius="6">
161+
<TextBlock FontSize="10" Margin="8 1 8 1" FontStyle="Italic">8 planets</TextBlock>
162+
</materialDesign:ColorZone>
149163
</DataTemplate>
150164
</materialDesign:TreeViewAssist.AdditionalTemplate>
151-
<!--
165+
<TreeViewItem Header="Solar System">
166+
<TreeViewItem Header="Mercury" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
167+
<TreeViewItem Header="Venus" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
168+
<TreeViewItem Header="Earth" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
169+
<TreeViewItem Header="Mars" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
170+
<TreeViewItem Header="Jupiter" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
171+
<TreeViewItem Header="Saturn" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
172+
<TreeViewItem Header="Uranus" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
173+
<TreeViewItem Header="Neptune" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
174+
</TreeViewItem>
175+
</TreeView>
176+
</smtx:XamlDisplay>
177+
178+
<TextBlock Grid.Row="2" Grid.Column="1" Margin="32 0 0 0" Style="{StaticResource MaterialDesignTitleTextBlock}">Additional node content, syntax 2:</TextBlock>
179+
<smtx:XamlDisplay Key="trees_4" Grid.Row="3" Grid.Column="1" Margin="32 0 0 0" >
180+
<TreeView>
152181
<materialDesign:TreeViewAssist.AdditionalTemplateSelector>
153182
<domain:TreeExampleSimpleTemplateSelector>
154183
<domain:TreeExampleSimpleTemplateSelector.SolarSystemTemplate>
155184
<DataTemplate>
156-
<TextBlock>8 or 9 planets?</TextBlock>
185+
<materialDesign:ColorZone Mode="Accent" CornerRadius="6" materialDesign:ShadowAssist.ShadowDepth="Depth1"
186+
Margin="2">
187+
<DockPanel LastChildFill="True">
188+
<Button Style="{DynamicResource MaterialDesignToolForegroundButton}" Margin="8 -6 8 -6" DockPanel.Dock="Right">
189+
<materialDesign:PackIcon Kind="Magnify" />
190+
</Button>
191+
<TextBlock FontSize="11" Margin="8 0 0 0" VerticalAlignment="Center" FontStyle="Italic">8 planets</TextBlock>
192+
</DockPanel>
193+
</materialDesign:ColorZone>
157194
</DataTemplate>
158195
</domain:TreeExampleSimpleTemplateSelector.SolarSystemTemplate>
159196
</domain:TreeExampleSimpleTemplateSelector>
160197
</materialDesign:TreeViewAssist.AdditionalTemplateSelector>
161-
-->
162198
<TreeViewItem Header="Solar System">
163-
<TreeViewItem Header="Mercury" materialDesign:TreeViewAssist.AdditionalTemplate="{x:Static materialDesign:TreeViewAssist.SuppressAdditionalTemplate}" />
199+
<TreeViewItem Header="Mercury" />
164200
<TreeViewItem Header="Venus" />
165201
<TreeViewItem Header="Earth" />
166202
<TreeViewItem Header="Mars" />
@@ -171,6 +207,69 @@
171207
</TreeViewItem>
172208
</TreeView>
173209
</smtx:XamlDisplay>
210+
211+
<TextBlock Grid.Row="2" Grid.Column="2" Margin="32 0 0 0" Style="{StaticResource MaterialDesignTitleTextBlock}">Additional node content, showcase:</TextBlock>
212+
<smtx:XamlDisplay Key="trees_5" Grid.Row="3" Grid.Column="2" Margin="32 0 0 0" >
213+
<TreeView DisplayMemberPath="Name" MinWidth="220">
214+
<TreeView.Resources>
215+
<DataTemplate DataType="{x:Type domain:Planet}">
216+
<StackPanel Orientation="Horizontal">
217+
<materialDesign:PackIcon Kind="GoogleEarth" />
218+
<TextBlock Text="{Binding Name,Mode=OneTime}" Margin="12 0 0 0" />
219+
</StackPanel>
220+
</DataTemplate>
221+
</TreeView.Resources>
222+
<materialDesign:TreeViewAssist.AdditionalTemplateSelector>
223+
<domain:TreeExampleSimpleTemplateSelector>
224+
<domain:TreeExampleSimpleTemplateSelector.SolarSystemTemplate>
225+
<DataTemplate>
226+
<materialDesign:ColorZone Mode="Standard" CornerRadius="6" materialDesign:ShadowAssist.ShadowDepth="Depth1"
227+
Margin="2">
228+
<DockPanel LastChildFill="True">
229+
<Button Style="{DynamicResource MaterialDesignToolForegroundButton}" Margin="8 -6 8 -6" DockPanel.Dock="Right">
230+
<materialDesign:PackIcon Kind="Magnify" />
231+
</Button>
232+
<TextBlock FontSize="11" Margin="8 0 0 0" VerticalAlignment="Center" FontStyle="Italic">8 planets</TextBlock>
233+
</DockPanel>
234+
</materialDesign:ColorZone>
235+
</DataTemplate>
236+
</domain:TreeExampleSimpleTemplateSelector.SolarSystemTemplate>
237+
<domain:TreeExampleSimpleTemplateSelector.PlanetTemplate>
238+
<DataTemplate DataType="{x:Type domain:Planet}">
239+
<Grid TextElement.FontSize="10" TextElement.FontStyle="Italic" Margin="8 0 0 0">
240+
<Grid.RowDefinitions>
241+
<RowDefinition Height="Auto" />
242+
<RowDefinition Height="Auto" />
243+
</Grid.RowDefinitions>
244+
<Grid.ColumnDefinitions>
245+
<ColumnDefinition Width="Auto" />
246+
<ColumnDefinition Width="Auto" />
247+
<ColumnDefinition Width="Auto" />
248+
<ColumnDefinition Width="Auto" />
249+
</Grid.ColumnDefinitions>
250+
<TextBlock Text="From Sun" />
251+
<TextBlock Grid.Column="1" Margin="3 0 0 0" Text="{Binding DistanceFromSun, Mode=OneTime, StringFormat={}{0}AU}" />
252+
<TextBlock Grid.Row="1" Text="From Earth" />
253+
<TextBlock Grid.Row="1" Grid.Column="1" Margin="3 0 0 0" Text="{Binding DistanceFromEarth,Mode=OneTime, StringFormat={}{0}AU}" />
254+
<TextBlock Grid.Column="2" Text="Velocity" Margin="12 0 0 0" />
255+
<TextBlock Grid.Column="3" Margin="3 0 0 0" Text="{Binding Velocity,Mode=OneTime, StringFormat={}{0}km/s}" />
256+
</Grid>
257+
</DataTemplate>
258+
</domain:TreeExampleSimpleTemplateSelector.PlanetTemplate>
259+
</domain:TreeExampleSimpleTemplateSelector>
260+
</materialDesign:TreeViewAssist.AdditionalTemplateSelector>
261+
<TreeViewItem Header="Solar System">
262+
<domain:Planet Name="Mercury" DistanceFromSun=".42" DistanceFromEarth="1.4" Velocity="44.29" />
263+
<domain:Planet Name="Venus" DistanceFromSun=".73" DistanceFromEarth="1.69" Velocity="34.82" />
264+
<domain:Planet Name="Earth" DistanceFromSun="0.99" DistanceFromEarth="0" Velocity="30.16" />
265+
<domain:Planet Name="Mars" DistanceFromSun="1.59" DistanceFromEarth="1.55" Velocity="23.12" />
266+
<domain:Planet Name="Jupiter" DistanceFromSun="5.43" DistanceFromEarth="5.29" Velocity="12.51" />
267+
<domain:Planet Name="Saturn" DistanceFromSun="10.07" DistanceFromEarth="10.69" Velocity="9.14" />
268+
<domain:Planet Name="Uranus" DistanceFromSun="19.90" DistanceFromEarth="20.37" Velocity="6.55" />
269+
<domain:Planet Name="Neptune" DistanceFromSun="29.94" DistanceFromEarth="30.88" Velocity="5.45" />
270+
</TreeViewItem>
271+
</TreeView>
272+
</smtx:XamlDisplay>
174273
</Grid>
175274
</UserControl>
176275

0 commit comments

Comments
 (0)