|
|
@ -8,6 +8,9 @@ using Avalonia.Data; |
|
|
using Xunit; |
|
|
using Xunit; |
|
|
using System; |
|
|
using System; |
|
|
using Avalonia.Controls.Templates; |
|
|
using Avalonia.Controls.Templates; |
|
|
|
|
|
using Avalonia.Markup.Xaml.Data; |
|
|
|
|
|
using Avalonia.Markup; |
|
|
|
|
|
using System.Globalization; |
|
|
|
|
|
|
|
|
namespace Avalonia.Styling.UnitTests |
|
|
namespace Avalonia.Styling.UnitTests |
|
|
{ |
|
|
{ |
|
|
@ -61,5 +64,39 @@ namespace Avalonia.Styling.UnitTests |
|
|
|
|
|
|
|
|
Assert.NotNull(NameScope.GetNameScope((Control)control.Child)); |
|
|
Assert.NotNull(NameScope.GetNameScope((Control)control.Child)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Fact] |
|
|
|
|
|
public void Does_Not_Call_Converter_ConvertBack_On_OneWay_Binding() |
|
|
|
|
|
{ |
|
|
|
|
|
var control = new Decorator { Name = "foo" }; |
|
|
|
|
|
var style = Mock.Of<IStyle>(); |
|
|
|
|
|
var binding = new Binding("Name", BindingMode.OneWay) |
|
|
|
|
|
{ |
|
|
|
|
|
Converter = new TestConverter(), |
|
|
|
|
|
RelativeSource = new RelativeSource(RelativeSourceMode.Self), |
|
|
|
|
|
}; |
|
|
|
|
|
var setter = new Setter(Decorator.TagProperty, binding); |
|
|
|
|
|
var activator = new BehaviorSubject<bool>(true); |
|
|
|
|
|
|
|
|
|
|
|
setter.Apply(style, control, activator); |
|
|
|
|
|
Assert.Equal("foobar", control.Tag); |
|
|
|
|
|
|
|
|
|
|
|
// Issue #1218 caused TestConverter.ConvertBack to throw here.
|
|
|
|
|
|
activator.OnNext(false); |
|
|
|
|
|
Assert.Null(control.Tag); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private class TestConverter : IValueConverter |
|
|
|
|
|
{ |
|
|
|
|
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
|
|
|
|
|
{ |
|
|
|
|
|
return value.ToString() + "bar"; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|