Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Visibility property in ViewHandlers #951

Merged
merged 18 commits into from
May 17, 2021
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,7 @@ void UpdateClip()
aView?.Invalidate();
}

[PortHandler]
void UpdateIsVisible()
{
VisualElement view = _renderer.Element;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using UWPApp = Microsoft.UI.Xaml.Application;
using UWPControls = Microsoft.UI.Xaml.Controls;
using WScrollMode = Microsoft.UI.Xaml.Controls.ScrollMode;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -41,11 +42,11 @@ public int Span

public static readonly DependencyProperty EmptyViewVisibilityProperty =
DependencyProperty.Register(nameof(EmptyViewVisibility), typeof(Visibility),
typeof(FormsGridView), new PropertyMetadata(Visibility.Collapsed));
typeof(FormsGridView), new PropertyMetadata(WVisibility.Collapsed));

public Visibility EmptyViewVisibility
public WVisibility EmptyViewVisibility
{
get { return (Visibility)GetValue(EmptyViewVisibilityProperty); }
get { return (WVisibility)GetValue(EmptyViewVisibilityProperty); }
set { SetValue(EmptyViewVisibilityProperty, value); }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using UwpApp = Microsoft.UI.Xaml.Application;
using UwpControlTemplate = Microsoft.UI.Xaml.Controls.ControlTemplate;
using UwpScrollBarVisibility = Microsoft.UI.Xaml.Controls.ScrollBarVisibility;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand All @@ -25,11 +26,11 @@ public FormsListView()

public static readonly DependencyProperty EmptyViewVisibilityProperty =
DependencyProperty.Register(nameof(EmptyViewVisibility), typeof(Visibility),
typeof(FormsListView), new PropertyMetadata(Visibility.Collapsed));
typeof(FormsListView), new PropertyMetadata(WVisibility.Collapsed));

public Visibility EmptyViewVisibility
public WVisibility EmptyViewVisibility
{
get { return (Visibility)GetValue(EmptyViewVisibilityProperty); }
get { return (WVisibility)GetValue(EmptyViewVisibilityProperty); }
set { SetValue(EmptyViewVisibilityProperty, value); }
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
using Microsoft.UI.Xaml;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
internal interface IEmptyView
{
Visibility EmptyViewVisibility { get; set; }
WVisibility EmptyViewVisibility { get; set; }
void SetEmptyView(FrameworkElement emptyView, View formsEmptyView);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using WRect = Windows.Foundation.Rect;
using Microsoft.Maui.Graphics;
using Microsoft.Maui.Controls.Platform;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -472,7 +473,7 @@ protected virtual void UpdateEmptyViewVisibility()

if (_emptyView != null && ListViewBase is IEmptyView emptyView)
{
emptyView.EmptyViewVisibility = Visibility.Visible;
emptyView.EmptyViewVisibility = WVisibility.Visible;

if (ActualWidth >= 0 && ActualHeight >= 0)
_formsEmptyView?.Layout(new Rectangle(0, 0, ActualWidth, ActualHeight));
Expand All @@ -485,7 +486,7 @@ protected virtual void UpdateEmptyViewVisibility()
if (_emptyViewDisplayed)
{
if (_emptyView != null && ListViewBase is IEmptyView emptyView)
emptyView.EmptyViewVisibility = Visibility.Collapsed;
emptyView.EmptyViewVisibility = WVisibility.Collapsed;

ItemsView.RemoveLogicalChild(_formsEmptyView);
}
Expand Down Expand Up @@ -582,7 +583,7 @@ bool IsElementVisibleInContainer(FrameworkElement element, FrameworkElement cont
if (element == null || container == null)
return false;

if (element.Visibility != Visibility.Visible)
if (element.Visibility != WVisibility.Visible)
return false;

var elementBounds = element.TransformToVisual(container).TransformBounds(new WRect(0, 0, element.ActualWidth, element.ActualHeight));
Expand Down
37 changes: 19 additions & 18 deletions src/Compatibility/Core/src/WinUI/FlyoutPageControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
using WBrush = Microsoft.UI.Xaml.Media.Brush;
using WImageSource = Microsoft.UI.Xaml.Media.ImageSource;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -82,7 +83,7 @@ public FlyoutPageControl()
{
DefaultStyleKey = typeof(FlyoutPageControl);

DetailTitleVisibility = Visibility.Collapsed;
DetailTitleVisibility = WVisibility.Collapsed;

CollapseStyle = CollapseStyle.Full;
}
Expand Down Expand Up @@ -133,9 +134,9 @@ public View DetailTitleView
set { SetValue(DetailTitleViewProperty, value); }
}

public Visibility DetailTitleVisibility
public WVisibility DetailTitleVisibility
{
get { return (Visibility)GetValue(DetailTitleVisibilityProperty); }
get { return (WVisibility)GetValue(DetailTitleVisibilityProperty); }
set { SetValue(DetailTitleVisibilityProperty, value); }
}

Expand Down Expand Up @@ -187,15 +188,15 @@ public string FlyoutTitle
set { SetValue(FlyoutTitleProperty, value); }
}

public Visibility FlyoutTitleVisibility
public WVisibility FlyoutTitleVisibility
{
get { return (Visibility)GetValue(FlyoutTitleVisibilityProperty); }
get { return (WVisibility)GetValue(FlyoutTitleVisibilityProperty); }
set { SetValue(FlyoutTitleVisibilityProperty, value); }
}

public Visibility FlyoutToolbarVisibility
public WVisibility FlyoutToolbarVisibility
{
get { return (Visibility)GetValue(FlyoutToolbarVisibilityProperty); }
get { return (WVisibility)GetValue(FlyoutToolbarVisibilityProperty); }
set { SetValue(FlyoutToolbarVisibilityProperty, value); }
}

Expand Down Expand Up @@ -231,9 +232,9 @@ public bool ToolbarDynamicOverflowEnabled
}
}

public Visibility ContentTogglePaneButtonVisibility
public WVisibility ContentTogglePaneButtonVisibility
{
get { return (Visibility)GetValue(ContentTogglePaneButtonVisibilityProperty); }
get { return (WVisibility)GetValue(ContentTogglePaneButtonVisibilityProperty); }
set { SetValue(ContentTogglePaneButtonVisibilityProperty, value); }
}

Expand Down Expand Up @@ -349,20 +350,20 @@ void UpdateMode()
{
// If we've determined that the pane will always be open, then there's no
// reason to display the show/hide pane button in the master
FlyoutToolbarVisibility = Visibility.Collapsed;
FlyoutToolbarVisibility = WVisibility.Collapsed;
}

// If we're in compact mode or the pane is always open,
// we don't need to display the content pane's toggle button
ContentTogglePaneButtonVisibility = _split.DisplayMode == SplitViewDisplayMode.Overlay
? Visibility.Visible
: Visibility.Collapsed;
? WVisibility.Visible
: WVisibility.Collapsed;

if (ContentTogglePaneButtonVisibility == Visibility.Visible)
DetailTitleVisibility = Visibility.Visible;
if (ContentTogglePaneButtonVisibility == WVisibility.Visible)
DetailTitleVisibility = WVisibility.Visible;

if (DetailTitleVisibility == Visibility.Visible && !ShouldShowNavigationBar)
DetailTitleVisibility = Visibility.Collapsed;
if (DetailTitleVisibility == WVisibility.Visible && !ShouldShowNavigationBar)
DetailTitleVisibility = WVisibility.Collapsed;

_firstLoad = true;
}
Expand Down Expand Up @@ -401,13 +402,13 @@ public string MasterTitle
set => FlyoutTitle = value;
}

public Visibility MasterTitleVisibility
public WVisibility MasterTitleVisibility
{
get => FlyoutTitleVisibility;
set => FlyoutTitleVisibility = value;
}

public Visibility MasterToolbarVisibility
public WVisibility MasterToolbarVisibility
{
get => FlyoutToolbarVisibility;
set => FlyoutToolbarVisibility = value;
Expand Down
3 changes: 2 additions & 1 deletion src/Compatibility/Core/src/WinUI/FlyoutPageRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using WImageSource = Microsoft.UI.Xaml.Media.ImageSource;
using Microsoft.Maui.Graphics;
using Microsoft.Maui.Controls.Platform;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -76,7 +77,7 @@ bool ITitleProvider.ShowTitle
return;

_showTitle = value;
Control.DetailTitleVisibility = _showTitle ? Visibility.Visible : Visibility.Collapsed;
Control.DetailTitleVisibility = _showTitle ? WVisibility.Visible : WVisibility.Collapsed;
}
}

Expand Down
19 changes: 10 additions & 9 deletions src/Compatibility/Core/src/WinUI/FormsCommandBar.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Media;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -60,26 +61,26 @@ void UpdateVisibility()
{
// If there's no title to display (e.g., toolbarplacement is set to bottom)
// or the title is collapsed (e.g., because it's empty)
if (frameworkElement == null || frameworkElement.Visibility != Visibility.Visible)
if (frameworkElement == null || frameworkElement.Visibility != WVisibility.Visible)
{
// Just collapse the whole thing
Visibility = Visibility.Collapsed;
Visibility = WVisibility.Collapsed;
return;
}

// The title needs to be visible, but we're not allowed to show a toolbar
// So we need to hide the toolbar items

Visibility = Visibility.Visible;
Visibility = WVisibility.Visible;

if (_moreButton != null)
{
_moreButton.Visibility = Visibility.Collapsed;
_moreButton.Visibility = WVisibility.Collapsed;
}

if (_primaryItemsControl != null)
{
_primaryItemsControl.Visibility = Visibility.Collapsed;
_primaryItemsControl.Visibility = WVisibility.Collapsed;
}

return;
Expand All @@ -90,11 +91,11 @@ void UpdateVisibility()
if (_primaryItemsControl != null)
{
// This is normally visible by default, but it might have been collapsed by the toolbar consistency rules above
_primaryItemsControl.Visibility = Visibility.Visible;
_primaryItemsControl.Visibility = WVisibility.Visible;
}

// Are there any commands to display?
var visibility = PrimaryCommands.Count + SecondaryCommands.Count > 0 ? Visibility.Visible : Visibility.Collapsed;
var visibility = PrimaryCommands.Count + SecondaryCommands.Count > 0 ? WVisibility.Visible : WVisibility.Collapsed;

if (_moreButton != null)
{
Expand All @@ -105,10 +106,10 @@ void UpdateVisibility()
// but it became available in 10.0.14393.0 and we have to support 10.0.10240
}

if (frameworkElement != null && frameworkElement.Visibility != Visibility.Collapsed)
if (frameworkElement != null && frameworkElement.Visibility != WVisibility.Collapsed)
{
// If there's a title to display, we have to be visible whether or not we have commands
Visibility = Visibility.Visible;
Visibility = WVisibility.Visible;
}
else
{
Expand Down
5 changes: 3 additions & 2 deletions src/Compatibility/Core/src/WinUI/FormsFlyout.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.Maui.Controls.Internals;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -54,8 +55,8 @@ public FormsFlyout(ActionSheetArguments sheetOptions)
RightBtn.Content = options.Destruction;
}

LeftBtn.Visibility = LeftBtn.Content == null ? Visibility.Collapsed : Visibility.Visible;
RightBtn.Visibility = RightBtn.Content == null ? Visibility.Collapsed : Visibility.Visible;
LeftBtn.Visibility = LeftBtn.Content == null ? WVisibility.Collapsed : WVisibility.Visible;
RightBtn.Visibility = RightBtn.Content == null ? WVisibility.Collapsed : WVisibility.Visible;
}

void ListItemSelected (object sender, ItemClickEventArgs e)
Expand Down
9 changes: 5 additions & 4 deletions src/Compatibility/Core/src/WinUI/FormsSlider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Media.Imaging;
using WImageSource = Microsoft.UI.Xaml.Media.ImageSource;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -32,13 +33,13 @@ static void SwapThumbs(FormsSlider slider)

if (slider.ThumbImageSource != null)
{
slider.Thumb.Visibility = Visibility.Collapsed;
slider.ImageThumb.Visibility = Visibility.Visible;
slider.Thumb.Visibility = WVisibility.Collapsed;
slider.ImageThumb.Visibility = WVisibility.Visible;
}
else
{
slider.Thumb.Visibility = Visibility.Visible;
slider.ImageThumb.Visibility = Visibility.Collapsed;
slider.Thumb.Visibility = WVisibility.Visible;
slider.ImageThumb.Visibility = WVisibility.Collapsed;
}
}

Expand Down
5 changes: 3 additions & 2 deletions src/Compatibility/Core/src/WinUI/PageControl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@
using Microsoft.Maui.Controls.PlatformConfiguration.WindowsSpecific;
using WBrush = Microsoft.UI.Xaml.Media.Brush;
using WImageSource = Microsoft.UI.Xaml.Media.ImageSource;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
public sealed class PageControl : ContentControl, IToolbarProvider, ITitleViewRendererController
{
public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(Visibility), typeof(PageControl), new PropertyMetadata(Visibility.Visible));
public static readonly DependencyProperty TitleVisibilityProperty = DependencyProperty.Register(nameof(TitleVisibility), typeof(WVisibility), typeof(PageControl), new PropertyMetadata(WVisibility.Visible));

public static readonly DependencyProperty ToolbarBackgroundProperty = DependencyProperty.Register(nameof(ToolbarBackground), typeof(WBrush), typeof(PageControl),
new PropertyMetadata(default(WBrush)));
Expand All @@ -23,7 +24,7 @@ public sealed class PageControl : ContentControl, IToolbarProvider, ITitleViewRe

public static readonly DependencyProperty TitleViewProperty = DependencyProperty.Register(nameof(TitleView), typeof(View), typeof(PageControl), new PropertyMetadata(default(View), OnTitleViewPropertyChanged));

public static readonly DependencyProperty TitleViewVisibilityProperty = DependencyProperty.Register(nameof(TitleViewVisibility), typeof(Visibility), typeof(PageControl), new PropertyMetadata(Visibility.Collapsed));
public static readonly DependencyProperty TitleViewVisibilityProperty = DependencyProperty.Register(nameof(TitleViewVisibility), typeof(WVisibility), typeof(PageControl), new PropertyMetadata(WVisibility.Collapsed));

public static readonly DependencyProperty TitleInsetProperty = DependencyProperty.Register("TitleInset", typeof(double), typeof(PageControl), new PropertyMetadata(default(double)));

Expand Down
5 changes: 3 additions & 2 deletions src/Compatibility/Core/src/WinUI/Platform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using WImage = Microsoft.UI.Xaml.Controls.Image;
using Microsoft.Maui.Graphics;
using Microsoft.Maui.Controls.Platform;
using WVisibility = Microsoft.UI.Xaml.Visibility;

namespace Microsoft.Maui.Controls.Compatibility.Platform.UWP
{
Expand Down Expand Up @@ -139,7 +140,7 @@ internal Platform(Microsoft.UI.Xaml.Window page)
MessagingCenter.Subscribe(this, Page.BusySetSignalName, (Page sender, bool enabled) =>
{
Microsoft.UI.Xaml.Controls.ProgressBar indicator = GetBusyIndicator();
indicator.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed;
indicator.Visibility = enabled ? WVisibility.Visible : WVisibility.Collapsed;
});

_toolbarTracker.CollectionChanged += OnToolbarItemsChanged;
Expand Down Expand Up @@ -317,7 +318,7 @@ Microsoft.UI.Xaml.Controls.ProgressBar GetBusyIndicator()
_busyIndicator = new Microsoft.UI.Xaml.Controls.ProgressBar
{
IsIndeterminate = true,
Visibility = Visibility.Collapsed,
Visibility = WVisibility.Collapsed,
VerticalAlignment = UI.Xaml.VerticalAlignment.Top
};

Expand Down
Loading