Browse Source

Special case string -> bool conversion.

pull/278/head
Steven Kirk 11 years ago
parent
commit
5eeccf0c10
  1. 24
      src/Markup/Perspex.Markup/Binding/LogicalNotNode.cs
  2. 2
      tests/Perspex.Markup.UnitTests/Binding/ExpressionObserverTests_Negation.cs

24
src/Markup/Perspex.Markup/Binding/LogicalNotNode.cs

@ -23,14 +23,28 @@ namespace Perspex.Markup.Binding
{ {
if (v != PerspexProperty.UnsetValue) if (v != PerspexProperty.UnsetValue)
{ {
try var s = v as string;
if (s != null)
{ {
var boolean = Convert.ToBoolean(v, CultureInfo.InvariantCulture); bool result;
return !boolean;
if (bool.TryParse(s, out result))
{
return !result;
}
} }
catch else
{ {
// TODO: Maybe should log something here. try
{
var boolean = Convert.ToBoolean(v, CultureInfo.InvariantCulture);
return !boolean;
}
catch
{
// TODO: Maybe should log something here.
}
} }
} }

2
tests/Perspex.Markup.UnitTests/Binding/ExpressionObserverTests_Negation.cs

@ -61,7 +61,7 @@ namespace Perspex.Markup.UnitTests.Binding
} }
[Fact] [Fact]
public async void Should_Return_Empty_For_String_Not_Convertible_To_Boolean() public async void Should_Return_UnsetValue_For_String_Not_Convertible_To_Boolean()
{ {
var data = new { Foo = "foo" }; var data = new { Foo = "foo" };
var target = new ExpressionObserver(data, "!Foo"); var target = new ExpressionObserver(data, "!Foo");

Loading…
Cancel
Save