Skip to content

Commit

Permalink
ScrollViewer-Padding Fixed (#3579)
Browse files Browse the repository at this point in the history
* ScrollViewer-Padding Fixed (Removed ScrollViewerAssist.IgnorePadding)

* Reintroduced ScrollViewerAssist.IgnorePadding

* By default set ScrollViewerAssist.IgnorePadding to false

* Introduced ScrollViewerAssist.PaddingMode
  • Loading branch information
JorisCleVR committed Jun 20, 2024
1 parent 572eccc commit e4a3966
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 12 deletions.
24 changes: 16 additions & 8 deletions src/MainDemo.Wpf/GroupBoxes.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -101,23 +101,31 @@

<WrapPanel>
<smtx:XamlDisplay UniqueKey="groupbox_7">
<GroupBox Width="300" Height="100" Header="Header"
<GroupBox Width="300" Height="120" Header="Header"
materialDesign:GroupBoxAssist.HeaderPadding="4" Padding="0"
Style="{StaticResource MaterialDesignGroupBox}">
<ScrollViewer>
<TextBlock Margin="8" TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
<ScrollViewer Padding="4" materialDesign:ScrollViewerAssist.PaddingMode="Default">
<StackPanel>
<TextBlock Margin="4" TextWrapping="Wrap"
Text="ScrollViewerAssist.PaddingMode on Default lets the ScrollViewer add padding in the default (WPF) way. This causes content to be cut off with the padding in the container as a border when scrolled." />
<TextBlock Margin="4" TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
</StackPanel>
</ScrollViewer>
</GroupBox>
</smtx:XamlDisplay>

<smtx:XamlDisplay UniqueKey="groupbox_8">
<GroupBox Width="300" Height="100" Header="Header"
<GroupBox Width="300" Height="120" Header="Header"
materialDesign:GroupBoxAssist.HeaderPadding="4" Padding="0"
Style="{StaticResource MaterialDesignCardGroupBox}">
<ScrollViewer>
<TextBlock Margin="8" TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
<ScrollViewer Padding="4" materialDesign:ScrollViewerAssist.PaddingMode="Content">
<StackPanel>
<TextBlock Margin="4" TextWrapping="Wrap"
Text="ScrollViewerAssist.PaddingMode on Content lets the ScrollViewer add padding around the content itself. This causes content to be cut off at the edge of the container when scrolled." />
<TextBlock Margin="4" TextWrapping="Wrap"
Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." />
</StackPanel>
</ScrollViewer>
</GroupBox>
</smtx:XamlDisplay>
Expand Down
7 changes: 7 additions & 0 deletions src/MaterialDesignThemes.Wpf/PaddingMode.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace MaterialDesignThemes.Wpf;

public enum PaddingMode
{
Default,
Content,
}
15 changes: 14 additions & 1 deletion src/MaterialDesignThemes.Wpf/ScrollViewerAssist.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,21 @@ public static bool GetShowSeparators(DependencyObject element)
return (bool)element.GetValue(ShowSeparatorsProperty);
}

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

public static void SetPaddingMode(DependencyObject element, PaddingMode value)
{
element.SetValue(PaddingModeProperty, value);
}

public static PaddingMode GetPaddingMode(DependencyObject element)
{
return (PaddingMode)element.GetValue(PaddingModeProperty);
}

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

public static void SetIgnorePadding(DependencyObject element, bool value) => element.SetValue(IgnorePaddingProperty, value);
public static bool GetIgnorePadding(DependencyObject element) => (bool)element.GetValue(IgnorePaddingProperty);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,9 +86,15 @@
<Setter TargetName="PART_TopSeparator" Property="Visibility" Value="Hidden" />
</Trigger>

<Trigger Property="wpf:ScrollViewerAssist.IgnorePadding" Value="False">
<Setter TargetName="PART_ScrollContentPresenter" Property="Margin" Value="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="wpf:ScrollViewerAssist.IgnorePadding" Value="False" />
<Condition Property="wpf:ScrollViewerAssist.PaddingMode" Value="Default" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter TargetName="PART_ScrollContentPresenter" Property="Margin" Value="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}}" />
</MultiTrigger.Setters>
</MultiTrigger>

<MultiTrigger>
<MultiTrigger.Conditions>
Expand Down Expand Up @@ -150,5 +156,24 @@

<Style x:Key="MaterialDesignScrollViewer" TargetType="ScrollViewer">
<Setter Property="Template" Value="{StaticResource MaterialDesignScrollViewerTemplate}" />
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="wpf:ScrollViewerAssist.IgnorePadding" Value="False" />
<Condition Property="wpf:ScrollViewerAssist.PaddingMode" Value="Content" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<ContentControl Margin="{Binding Padding, RelativeSource={RelativeSource AncestorType=ScrollViewer}}">
<ContentPresenter Content="{Binding}" />
</ContentControl>
</DataTemplate>
</Setter.Value>
</Setter>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>

0 comments on commit e4a3966

Please sign in to comment.