Skip to content

Commit e95413f

Browse files
corvinszCorvin Szimion
andauthored
Fix3398 - scroll viewer ignore pad in templates (#3717)
* Cleanup of launchSettings and Cards Page in Demo * Revert "Cleanup of launchSettings and Cards Page in Demo" This reverts commit ede38d4. * added wpf:ScrollViewerAssist.IgnorePadding="True" to ScrollViewers in Style Templates * bind ScrollViewerAssist.IgnorePadding and PaddingMode to the templated parent * code style: changed to expression bodied methods in ScrollViewerAssist.cs --------- Co-authored-by: Corvin Szimion <[email protected]>
1 parent 1a83380 commit e95413f

8 files changed

+36
-33
lines changed

src/MaterialDesignThemes.Wpf/ScrollViewerAssist.cs

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,66 +14,46 @@ private static void OnSyncHorizontalOffsetChanged(DependencyObject d, Dependency
1414
}
1515

1616
internal static void SetSyncHorizontalOffset(DependencyObject element, double value)
17-
{
18-
element.SetValue(HorizontalOffsetProperty, value);
19-
}
17+
=> element.SetValue(HorizontalOffsetProperty, value);
2018

2119
internal static double GetSyncHorizontalOffset(DependencyObject element)
22-
{
23-
return (double)element.GetValue(HorizontalOffsetProperty);
24-
}
20+
=> (double)element.GetValue(HorizontalOffsetProperty);
2521

2622
public static readonly DependencyProperty IsAutoHideEnabledProperty = DependencyProperty.RegisterAttached(
2723
"IsAutoHideEnabled", typeof(bool), typeof(ScrollViewerAssist), new PropertyMetadata(default(bool)));
2824

2925
public static void SetIsAutoHideEnabled(DependencyObject element, bool value)
30-
{
31-
element.SetValue(IsAutoHideEnabledProperty, value);
32-
}
26+
=> element.SetValue(IsAutoHideEnabledProperty, value);
3327

3428
public static bool GetIsAutoHideEnabled(DependencyObject element)
35-
{
36-
return (bool)element.GetValue(IsAutoHideEnabledProperty);
37-
}
29+
=> (bool)element.GetValue(IsAutoHideEnabledProperty);
3830

3931
public static readonly DependencyProperty CornerRectangleVisibilityProperty = DependencyProperty.RegisterAttached(
4032
"CornerRectangleVisibility", typeof(Visibility), typeof(ScrollViewerAssist), new PropertyMetadata(default(Visibility)));
4133

4234
public static void SetCornerRectangleVisibility(DependencyObject element, Visibility value)
43-
{
44-
element.SetValue(CornerRectangleVisibilityProperty, value);
45-
}
35+
=> element.SetValue(CornerRectangleVisibilityProperty, value);
4636

4737
public static Visibility GetCornerRectangleVisibility(DependencyObject element)
48-
{
49-
return (Visibility)element.GetValue(CornerRectangleVisibilityProperty);
50-
}
38+
=> (Visibility)element.GetValue(CornerRectangleVisibilityProperty);
5139

5240
public static readonly DependencyProperty ShowSeparatorsProperty = DependencyProperty.RegisterAttached(
5341
"ShowSeparators", typeof(bool), typeof(ScrollViewerAssist), new PropertyMetadata(default(bool)));
5442

5543
public static void SetShowSeparators(DependencyObject element, bool value)
56-
{
57-
element.SetValue(ShowSeparatorsProperty, value);
58-
}
44+
=> element.SetValue(ShowSeparatorsProperty, value);
5945

6046
public static bool GetShowSeparators(DependencyObject element)
61-
{
62-
return (bool)element.GetValue(ShowSeparatorsProperty);
63-
}
47+
=> (bool)element.GetValue(ShowSeparatorsProperty);
6448

6549
public static readonly DependencyProperty PaddingModeProperty = DependencyProperty.RegisterAttached(
6650
"PaddingMode", typeof(PaddingMode), typeof(ScrollViewerAssist), new PropertyMetadata(PaddingMode.Content));
6751

6852
public static void SetPaddingMode(DependencyObject element, PaddingMode value)
69-
{
70-
element.SetValue(PaddingModeProperty, value);
71-
}
53+
=> element.SetValue(PaddingModeProperty, value);
7254

7355
public static PaddingMode GetPaddingMode(DependencyObject element)
74-
{
75-
return (PaddingMode)element.GetValue(PaddingModeProperty);
76-
}
56+
=> (PaddingMode)element.GetValue(PaddingModeProperty);
7757

7858
public static readonly DependencyProperty IgnorePaddingProperty = DependencyProperty.RegisterAttached(
7959
"IgnorePadding", typeof(bool), typeof(ScrollViewerAssist), new PropertyMetadata(true));

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.DataGrid.xaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
SnapsToDevicePixels="True">
6262
<Grid>
6363
<ScrollViewer x:Name="PART_ContentHost"
64+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
65+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
6466
Focusable="false"
6567
HorizontalScrollBarVisibility="Hidden"
6668
VerticalScrollBarVisibility="Hidden" />
@@ -151,6 +153,8 @@
151153
SnapsToDevicePixels="True">
152154
<Grid Validation.ErrorTemplate="{StaticResource MaterialDesignValidationErrorTemplate}">
153155
<ScrollViewer x:Name="PART_ContentHost"
156+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
157+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
154158
Focusable="false"
155159
HorizontalScrollBarVisibility="Hidden"
156160
VerticalScrollBarVisibility="Hidden" />

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListBox.xaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,8 @@
363363
ClipToBounds="False"
364364
SnapsToDevicePixels="true">
365365
<ScrollViewer Padding="{TemplateBinding Padding}"
366+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
367+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
366368
ClipToBounds="False"
367369
Focusable="false">
368370
<ItemsPresenter ClipToBounds="False" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
@@ -645,7 +647,10 @@
645647
BorderBrush="{TemplateBinding BorderBrush}"
646648
BorderThickness="{TemplateBinding BorderThickness}"
647649
SnapsToDevicePixels="true">
648-
<ScrollViewer Padding="{TemplateBinding Padding}" Focusable="false">
650+
<ScrollViewer Padding="{TemplateBinding Padding}"
651+
Focusable="false"
652+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
653+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}">
649654
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
650655
</ScrollViewer>
651656
</Border>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListView.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929

3030
<DockPanel Margin="{TemplateBinding Padding}">
3131
<ScrollViewer wpf:ScrollViewerAssist.SyncHorizontalOffset="{Binding HorizontalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
32+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
33+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
3234
DockPanel.Dock="Top"
3335
Focusable="false"
3436
HorizontalScrollBarVisibility="Hidden"

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Menu.xaml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,10 @@
188188
<Border Background="{TemplateBinding Background}" CornerRadius="2">
189189

190190
<Border Background="Transparent">
191-
<ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
191+
<ScrollViewer x:Name="SubMenuScrollViewer"
192+
Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}"
193+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
194+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}">
192195
<Grid Margin="0,16" RenderOptions.ClearTypeHint="Enabled">
193196
<Canvas Width="0"
194197
Height="0"
@@ -324,7 +327,10 @@
324327
Effect="{DynamicResource MaterialDesignShadowDepth1}" />
325328

326329
<Border Margin="3" Background="Transparent">
327-
<ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
330+
<ScrollViewer x:Name="SubMenuScrollViewer"
331+
Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}"
332+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
333+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}">
328334
<Grid Margin="0,16" RenderOptions.ClearTypeHint="Enabled">
329335
<ItemsPresenter x:Name="ItemsPresenter"
330336
Grid.IsSharedSizeScope="True"

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
Focusable="False">
4343
<ScrollViewer wpf:ScrollViewerAssist.BubbleVerticalScroll="True"
4444
wpf:ScrollViewerAssist.SupportHorizontalScroll="True"
45+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
46+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
4547
HorizontalScrollBarVisibility="Hidden"
4648
VerticalScrollBarVisibility="Hidden">
4749
<StackPanel>

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TreeListView.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@
263263
BorderThickness="{TemplateBinding BorderThickness}"
264264
SnapsToDevicePixels="true">
265265
<ScrollViewer x:Name="PART_ScrollViewer"
266+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
267+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
266268
Padding="{TemplateBinding Padding}"
267269
Background="{TemplateBinding Background}"
268270
CanContentScroll="false"

src/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TreeView.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
<ScrollViewer x:Name="_tv_scrollviewer_"
3232
Padding="{TemplateBinding Padding}"
3333
Background="{TemplateBinding Background}"
34+
wpf:ScrollViewerAssist.IgnorePadding="{Binding Path=(wpf:ScrollViewerAssist.IgnorePadding), RelativeSource={RelativeSource TemplatedParent}}"
35+
wpf:ScrollViewerAssist.PaddingMode="{Binding Path=(wpf:ScrollViewerAssist.PaddingMode), RelativeSource={RelativeSource TemplatedParent}}"
3436
CanContentScroll="false"
3537
Focusable="false"
3638
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"

0 commit comments

Comments
 (0)