Skip to content

Commit a64f2b8

Browse files
committed
first version of toggle list box up and running in proving ground
1 parent 51b75f4 commit a64f2b8

File tree

4 files changed

+71
-25
lines changed

4 files changed

+71
-25
lines changed

MainDemo.Wpf/ProvingGround.xaml

Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
55
x:Class="MaterialDesignColors.WpfExample.ProvingGround"
66
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
7+
xmlns:converters="clr-namespace:MaterialDesignThemes.Wpf.Converters;assembly=MaterialDesignThemes.Wpf"
78
xmlns:wpfExample="clr-namespace:MaterialDesignColors.WpfExample"
89
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
910
Background="{DynamicResource MaterialDesignPaper}"
@@ -21,12 +22,15 @@
2122
<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.Lime.xaml" />
2223
</ResourceDictionary.MergedDictionaries>
2324

25+
<converters:EqualityToVisibilityConverter x:Key="EqualityToVisibilityConverter" />
26+
2427
<Style x:Key="MaterialDesignToggleListBoxItem" TargetType="{x:Type ListBoxItem}">
2528
<Setter Property="Background" Value="Transparent"/>
2629
<Setter Property="BorderThickness" Value="0"/>
30+
<Setter Property="BorderBrush" Value="{DynamicResource MaterialDesignDivider}"/>
2731
<Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
2832
<Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
29-
<Setter Property="Padding" Value="8" />
33+
<Setter Property="Padding" Value="14 6 14 6" />
3034
<Setter Property="SnapsToDevicePixels" Value="True"/>
3135
<Setter Property="Template">
3236
<Setter.Value>
@@ -60,9 +64,12 @@
6064
</VisualStateGroup.Transitions>
6165
<VisualState Name="Selected">
6266
<Storyboard>
63-
<DoubleAnimation Storyboard.TargetName="SelectedBorder"
67+
<DoubleAnimation Storyboard.TargetName="SelectedBackgroundBorder"
6468
Storyboard.TargetProperty="Opacity"
6569
To="0.18" Duration="0"/>
70+
<DoubleAnimation Storyboard.TargetName="SelectedBorder"
71+
Storyboard.TargetProperty="Opacity"
72+
To="1" Duration="0"/>
6673
</Storyboard>
6774
</VisualState>
6875
<VisualState Name="Unselected"/>
@@ -79,15 +86,15 @@
7986
<Border x:Name="MouseOverBorder"
8087
Opacity="0"
8188
Background="{TemplateBinding Foreground, Converter={StaticResource BrushRoundConverter}}"/>
82-
83-
<Border x:Name="SelectedBorder"
84-
Opacity="0"
85-
Background="{TemplateBinding Foreground, Converter={StaticResource BrushRoundConverter}}"
86-
RenderTransformOrigin="0.5,0.5">
89+
<Border x:Name="SelectedBackgroundBorder"
90+
Opacity="0"
91+
Background="{TemplateBinding Foreground, Converter={StaticResource BrushRoundConverter}}"
92+
RenderTransformOrigin="0.5,0.5">
8793
<Border.RenderTransform>
8894
<ScaleTransform ScaleX="1"/>
8995
</Border.RenderTransform>
9096
</Border>
97+
9198
<materialDesign:Ripple Feedback="{TemplateBinding Foreground, Converter={StaticResource BrushRoundConverter}}"
9299
Focusable="False"
93100
Content="{TemplateBinding Content}"
@@ -97,14 +104,13 @@
97104
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
98105
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
99106
Padding="{TemplateBinding Padding}">
100-
<materialDesign:Ripple.Resources>
101-
<Style TargetType="{x:Type materialDesign:PackIcon}" >
102-
<Setter Property="Width" Value="220" />
103-
<Setter Property="Height" Value="220" />
104-
<Setter Property="Foreground" Value="Red" />
105-
</Style>
106-
</materialDesign:Ripple.Resources>
107+
107108
</materialDesign:Ripple>
109+
<Border x:Name="SelectedBorder"
110+
Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}, Path=SelectionMode, Converter={StaticResource EqualityToVisibilityConverter}, ConverterParameter={x:Static SelectionMode.Extended}, Mode=OneWay}"
111+
Opacity="0"
112+
BorderThickness="1 0 1 0"
113+
BorderBrush="{DynamicResource MaterialDesignDivider}" />
108114
</Grid>
109115
</Border>
110116
</ControlTemplate>
@@ -134,10 +140,17 @@
134140
<Setter Property="Template">
135141
<Setter.Value>
136142
<ControlTemplate TargetType="{x:Type ListBox}">
137-
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
138-
<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
139-
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
140-
</ScrollViewer>
143+
<ControlTemplate.Resources>
144+
<Style TargetType="{x:Type materialDesign:PackIcon}" >
145+
<Setter Property="Width" Value="22" />
146+
<Setter Property="Height" Value="22" />
147+
</Style>
148+
</ControlTemplate.Resources>
149+
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true"
150+
Padding="{TemplateBinding Padding}">
151+
<materialDesign:Card materialDesign:ShadowAssist.ShadowDepth="Depth1" HorizontalAlignment="Left">
152+
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
153+
</materialDesign:Card>
141154
</Border>
142155
<ControlTemplate.Triggers>
143156
<MultiTrigger>
@@ -156,10 +169,10 @@
156169
</ResourceDictionary>
157170
</UserControl.Resources>
158171

159-
<StackPanel>
172+
<StackPanel Margin="8">
160173
<ListBox Style="{StaticResource MaterialDesignToggleListBox}">
161174
<ListBoxItem>
162-
<materialDesign:PackIcon Kind="FormatAlignLeft"/>
175+
<materialDesign:PackIcon Kind="FormatAlignLeft"/>
163176
</ListBoxItem>
164177
<ListBoxItem>
165178
<materialDesign:PackIcon Kind="FormatAlignCenter"/>
@@ -171,7 +184,21 @@
171184
<materialDesign:PackIcon Kind="FormatAlignJustify"/>
172185
</ListBoxItem>
173186
</ListBox>
174-
187+
188+
<ListBox Style="{StaticResource MaterialDesignToggleListBox}"
189+
SelectionMode="Extended"
190+
Margin="0 8 0 0">
191+
<ListBoxItem>
192+
<materialDesign:PackIcon Kind="FormatBold"/>
193+
</ListBoxItem>
194+
<ListBoxItem>
195+
<materialDesign:PackIcon Kind="FormatItalic"/>
196+
</ListBoxItem>
197+
<ListBoxItem>
198+
<materialDesign:PackIcon Kind="FormatUnderline"/>
199+
</ListBoxItem>
200+
</ListBox>
201+
175202
</StackPanel>
176203

177204
</UserControl>

MaterialDesignThemes.Wpf/Converters/BooleanToVisibilityConverter.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Globalization;
4-
using System.Linq;
5-
using System.Text;
6-
using System.Threading.Tasks;
73
using System.Windows;
84
using System.Windows.Data;
95

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows;
4+
using System.Windows.Data;
5+
6+
namespace MaterialDesignThemes.Wpf.Converters
7+
{
8+
public class EqualityToVisibilityConverter : IValueConverter
9+
{
10+
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
11+
{
12+
if (value != null && value.Equals(parameter)) return Visibility.Visible;
13+
14+
return Visibility.Collapsed;
15+
}
16+
17+
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
18+
{
19+
throw new NotImplementedException();
20+
}
21+
}
22+
}

MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@
253253
<Compile Include="Converters\ClockItemIsCheckedConverter.cs" />
254254
<Compile Include="Converters\ClockLineConverter.cs" />
255255
<Compile Include="Converters\DrawerOffsetConverter.cs" />
256+
<Compile Include="Converters\EqualityToVisibilityConverter.cs" />
256257
<Compile Include="Converters\HintProxyFabricConverter.cs" />
257258
<Compile Include="Converters\MathConverter.cs" />
258259
<Compile Include="Converters\MathMultipleConverter.cs" />

0 commit comments

Comments
 (0)