Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Commit 4ddcf4e

Browse files
Don't thrown when tap/selected is null, return null. For deselect. (#950)
1 parent 4f85113 commit 4ddcf4e

File tree

4 files changed

+18
-6
lines changed

4 files changed

+18
-6
lines changed

src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/ItemSelectedEventArgsConverter_Tests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public class ItemSelectedEventArgsConverter_Tests
1515
{
1616
// We know it's deprecated, still good to test it
1717
#pragma warning disable CS0618 // Type or member is obsolete
18-
new object[] { new SelectedItemChangedEventArgs(expectedValue), expectedValue},
18+
new object[] { new SelectedItemChangedEventArgs(expectedValue), expectedValue },
19+
new object[] { null, null },
1920
#pragma warning restore CS0618 // Type or member is obsolete
20-
};
21+
};
2122

2223
[Theory]
2324
[MemberData(nameof(GetData))]

src/CommunityToolkit/Xamarin.CommunityToolkit.UnitTests/Converters/ItemTappedEventArgsConverter_Tests.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public class ItemTappedEventArgsConverter_Tests
1515
{
1616
// We know it's deprecated, still good to test it
1717
#pragma warning disable CS0618 // Type or member is obsolete
18-
new object[] { new ItemTappedEventArgs(null, expectedValue), expectedValue},
18+
new object[] { new ItemTappedEventArgs(null, expectedValue), expectedValue },
19+
new object[] { new ItemTappedEventArgs(null, null), null },
1920
#pragma warning restore CS0618 // Type or member is obsolete
20-
};
21+
};
2122

2223
[Theory]
2324
[MemberData(nameof(GetData))]

src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/ItemSelectedEventArgsConverter.shared.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ public class ItemSelectedEventArgsConverter : ValueConverterExtension, IValueCon
1919
/// <param name="culture">The culture to use in the converter. This is not implemented.</param>
2020
/// <returns>A <see cref="SelectedItemChangedEventArgs.SelectedItem"/> object from object of type <see cref="SelectedItemChangedEventArgs"/>.</returns>
2121
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
22-
=> value is SelectedItemChangedEventArgs selectedItemChangedEventArgs
22+
{
23+
if (value == null)
24+
return null;
25+
26+
return value is SelectedItemChangedEventArgs selectedItemChangedEventArgs
2327
? selectedItemChangedEventArgs.SelectedItem
2428
: throw new ArgumentException("Expected value to be of type SelectedItemChangedEventArgs", nameof(value));
29+
}
2530

2631
/// <summary>
2732
/// This method is not implemented and will throw a <see cref="NotImplementedException"/>.

src/CommunityToolkit/Xamarin.CommunityToolkit/Converters/ItemTappedEventArgsConverter.shared.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@ public class ItemTappedEventArgsConverter : ValueConverterExtension, IValueConve
1919
/// <param name="culture">The culture to use in the converter. This is not implemented.</param>
2020
/// <returns>A <see cref="ItemTappedEventArgs.Item"/> object from object of type <see cref="ItemTappedEventArgs"/>.</returns>
2121
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
22-
=> value is ItemTappedEventArgs itemTappedEventArgs
22+
{
23+
if (value == null)
24+
return null;
25+
26+
return value is ItemTappedEventArgs itemTappedEventArgs
2327
? itemTappedEventArgs.Item
2428
: throw new ArgumentException("Expected value to be of type ItemTappedEventArgs", nameof(value));
29+
}
2530

2631
/// <summary>
2732
/// This method is not implemented and will throw a <see cref="NotImplementedException"/>.

0 commit comments

Comments
 (0)