public object ProvideValue(IMarkupExtensionContext context) { Object realSource = Source ?? context.DataContext; if ( null != realSource && !( realSource is INotifyPropertyChanged ) ) { throw new ArgumentException("Source must be INotifyPropertyChanged to use bindings"); } if (null != realSource) { BindingMode mode = BindingMode.Default; if ( Path != null ) { Type enumType = typeof ( BindingMode ); string[ ] enumNames = enumType.GetEnumNames( ); for ( int i = 0, len = enumNames.Length; i < len; i++ ) { if ( enumNames[ i ] == Mode ) { mode = ( BindingMode ) Enum.ToObject( enumType, enumType.GetEnumValues( ).GetValue( i ) ); break; } } } BindingBase binding = new BindingBase( context.Object, context.PropertyName, (INotifyPropertyChanged) realSource, Path, mode); if ( Converter != null ) binding.Converter = Converter; binding.Bind( ); // mb return actual property value ? return null; } return null; }
// [TestMethod] public void TestString() { SourceClass source = new SourceClass(); TargetClass target = new TargetClass(); BindingBase binding = new BindingBase(target, "Title", source, "Text", BindingMode.OneWay); binding.Bind(); source.Text = "Text!"; Assert.AreEqual( target.Title, source.Text ); }
public void TestListBinding2() { SourceClass source = new SourceClass(); TargetClass target = new TargetClass(); BindingBase binding = new BindingBase(target, "Items", source, "SourceItems", BindingMode.OneWay); source.SourceItems.Add("1"); binding.Bind(); Assert.IsTrue(target.Items[0] == "1"); source.SourceItems.Remove("1"); Assert.IsTrue(target.Items.Count == 0); }
public static void TestConversion() { SourceClass source = new SourceClass(); TargetClass target = new TargetClass(); BindingBase binding = new BindingBase(target, "TargetInt", source, "SourceStr", BindingMode.OneWay); BindingBase binding2 = new BindingBase(target, "TargetStr", source, "SourceInt", BindingMode.OneWay); binding.Bind(); binding2.Bind(); source.SourceInt = 5; source.SourceStr = "4"; Assert.AreEqual(target.TargetInt, 4); Assert.AreEqual(target.TargetStr, "5"); }
// [TestMethod] public void TestMethod1() { SourceClass source = new SourceClass( ); TargetClass target = new TargetClass( ); BindingBase binding = new BindingBase( target, "TargetStr", source, "SourceInt" ); BindingResult lastResult = null; binding.OnBinding += result => { lastResult = result; }; binding.Bind( ); target.TargetStr = "5"; Assert.IsTrue( source.SourceInt == 5 ); target.TargetStr = "invalid int"; Assert.IsTrue(source.SourceInt == 0); Assert.IsTrue( lastResult.hasConversionError ); }
public void TestMethod1() { TargetClass target = new TargetClass( ); SourceClass source = new SourceClass( ); BindingBase binding = new BindingBase( target, "Text", source, "Val" ); binding.Converter = new DoubleToStringConverter( ); binding.Bind( ); source.Val = 3.0f; Assert.IsTrue( target.Text == "3" ); target.Text = "0.5"; Assert.IsTrue( source.Val == 0.5 ); }
// [TestMethod] public void TestValidation( ) { SourceClass source = new SourceClass(); TargetClass target = new TargetClass(); BindingBase binding = new BindingBase(target, "TargetStr", source, "SourceInt", BindingMode.OneWay); binding.UpdateSourceIfBindingFails = false; binding.Bind(); target.TargetInt = 1; source.SourceStr = "invalid int"; Assert.IsTrue( target.TargetInt == 1 ); }
// [TestMethod] public void TestMethod1() { SourceClass source = new SourceClass( ); TargetClass target = new TargetClass( ); BindingBase binding = new BindingBase( target, "S", source, "Str" ); binding.Adapter = new MyAdapter( ); binding.Bind(); source.Str = "123"; Assert.IsTrue( target.GetTargetStr( ) == "123" ); target.SetTargetStr( "456" ); Assert.IsTrue(source.Str == "456"); binding.Unbind( ); source.Str = "123"; Assert.IsTrue(target.GetTargetStr() == "456"); }