forked from CommunityToolkit/Lottie-Windows
-
Notifications
You must be signed in to change notification settings - Fork 0
/
VisibilityConverter.cs
54 lines (48 loc) · 1.64 KB
/
VisibilityConverter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#nullable enable
using System;
using System.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Data;
namespace LottieViewer
{
// Converts bool, integer and null values into Visibility values.
public sealed class VisibilityConverter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, string language)
{
if (value is bool boolValue)
{
// The value is already a boolean.
}
else if (value is int count)
{
// True if the value is != 0.
boolValue = count != 0;
}
else if (value is ICollection collection)
{
// True if the count is != 0.
boolValue = collection.Count != 0;
}
else
{
// True if the value is not null.
boolValue = value is not null;
}
if ((string)parameter == "not")
{
// The "not" parameter inverts the logic.
boolValue = !boolValue;
}
return boolValue ? Visibility.Visible : Visibility.Collapsed;
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, string language)
{
// Only support one way binding.
throw new NotImplementedException();
}
}
}