Scrollbar Style - c#

How can I remove the small rectangle that appears when a horizontal and vertical scrollbar appear?

I assume you are using a ScrollViewer. The default template of a ScrollViewer is a Grid containing two rows and two columns. The upper left cell contains the ScrollViewer content, upper right the vertical ScrollBar, lower left the horizontal ScrollBar, and a Rectangle on the lower right cell. Please check this article: http://www.eggheadcafe.com/tutorials/aspnet/f51ddf8c-5227-4f1b-a5df-ec3d1b3439ca/styling-the-wpf-scrollviewer.aspx. You can see the default template there. You could remove the rectangle and then set either the ColumnSpan of the horizontal ScrollBar or RowSpan of the vertical ScrollBar to cover the lower right cell. Hope this helps.

Related

Horizontal percentage stretching of children

What component in MAUI would I use to accomplish such a chart?
It should stretch to 100% width and the elements should have relative widths.
Is this possible with XAML only?
I thought about a grid with one row, but I can't iterate over the children.
Or a horizontal stackpanel, but it won't stretch.
Any idea?

Hiding the Up and Down arrows in the scrollbar of a scrollviewer

Is there a way to hide these arrows in a scrollbar of a scrollviewer?
I couldn't find anything on google on how to disable these, if that's not possible then is there a way to change their color?
You need to set the VerticalScrollBarVisibility property of your ScrollViewer. The options are
Auto - A ScrollBar appears and the dimension of the ScrollViewer is applied
to the content when the viewport cannot display all of the content.
For a horizontal ScrollBar, the width of the content is set to the
ViewportWidth of the ScrollViewer. For a vertical ScrollBar, the
height of the content is set to the ViewportHeight of the
ScrollViewer.
Disabled - A ScrollBar does not appear even when the viewport cannot display all of the content. The dimension of the content is set to the corresponding dimension of the ScrollViewer parent. For a horizontal ScrollBar, the width of the content is set to the ViewportWidth of the ScrollViewer. For a vertical ScrollBar, the height of the content is set to the ViewportHeight of the ScrollViewer.
Hidden - A ScrollBar does not appear even when the viewport cannot display all of the content. The dimension of the ScrollViewer is not applied to the content.
Visible - A ScrollBar always appears. The dimension of the ScrollViewer is applied to the content. For a horizontal ScrollBar, the width of the content is set to the ViewportWidth of the ScrollViewer. For a vertical ScrollBar, the height of the content is set to the ViewportHeight of the ScrollViewer.

DataGrid and ScrollBar styling WPF

I'm creating DataGrid style in WPF. Now I have rounded corners in my DataGrid, but when appears ScrollBar, it looks not beautiful. DataGridHeader corner is still rounded, and I can see space between corners of ScrollBar button and DataGridHeader. Here is an image:
I need to show rounded corners only when DataGrid hasn't ScrollBar.In all other cases I need to show this:
So how to remove dynamicaly that space on the first image?
Style Scrollbar so that it overlaps the the grid by using negative left margin value

Make vertical ScrollViewer invisible

I have a ScrollViewer control in my window and I would like to hide it when the user cannot scroll down the page. Just like with the horizontal scroll viewer. here is an example:
so here both scrollers are visible because scrolling is enabled:
if I collapse some of the columns of my listview note how eventually the horizontal scroller disappears:
Now note what happens with the vertical scroller:
so far its visible and that's ok because not all the content fits in the page. But let me maximize the page and co-lapse all the group boxes so that all the content fits in the page:
Why is it visible if it is not possible to scroll? I set all the group boxes height = 0 except the last one and the vertical scroller still shoes up? The horizontal scroller disappeared when it was not possible to scroll any more. Why does the vertical scroller does not behave the same way?
What can I do to make it invisible when it is not possible to scroll?
Make sure that your Scrollviewer's VerticalScrollBarVisibility = ScrollBarVisibility.Auto;

How to obtain visible borders of canvas placed on scrollviewer

I have canvas which is placed on scrollviewer in order to allow scrolling. Is it possible to get coordinates of visible part of canvas?
I was trying to calculate it that way
leftBorder = ScrollViewer1.HorizontalOffset;
rightBorder = ScrollViewer1.ViewportWidth - ScrollViewer1.HorizontalOffset;
topBorder = ScrollViewer1.VerticalOffset;
bottomBorder = ScrollViewer1.ViewportHeight - ScrollViewer1.VerticalOffset;
but it seems that it is not working.
The Horizontal and Vertical offset is the actual scroll value in that direction.
Besides that, if you want the size of the content without any scrollbars that might be visible.
You can search for the child named "PART_ScrollContentPresenter". This shows the actual content of the scrollviewer, and this content will be resized when the scrollbars needs more space.
Hope that helps.

Categories