diff --git a/src/Perspex.Styling/Styling/StyleActivator.cs b/src/Perspex.Styling/Styling/StyleActivator.cs index dd2601e0bb..05b97a11ec 100644 --- a/src/Perspex.Styling/Styling/StyleActivator.cs +++ b/src/Perspex.Styling/Styling/StyleActivator.cs @@ -17,18 +17,40 @@ namespace Perspex.Styling public static class StyleActivator { - public static IObservable And(IEnumerable> inputs) + public static IObservable And(IList> inputs) { - return inputs.CombineLatest() - .Select(values => values.All(x => x)) - .DistinctUntilChanged(); + if (inputs.Count == 0) + { + throw new ArgumentException("StyleActivator.And inputs may not be empty."); + } + else if (inputs.Count == 1) + { + return inputs[0]; + } + else + { + return inputs.CombineLatest() + .Select(values => values.All(x => x)) + .DistinctUntilChanged(); + } } - public static IObservable Or(IEnumerable> inputs) + public static IObservable Or(IList> inputs) { - return inputs.CombineLatest() + if (inputs.Count == 0) + { + throw new ArgumentException("StyleActivator.Or inputs may not be empty."); + } + else if (inputs.Count == 1) + { + return inputs[0]; + } + else + { + return inputs.CombineLatest() .Select(values => values.Any(x => x)) .DistinctUntilChanged(); + } } } }