Browse Source

Fixed the problem with binding converters.

Wasn't assigning the property in the markup extension ProvideValue.
D'oh.
Steven Kirk 10 years ago
parent
commit
c988bdb387

+ 1 - 2
samples/XamlTestApplicationPcl/TextBox.paml

@@ -27,8 +27,7 @@
                 <TextBlock Name="watermark"
                            Opacity="0.5"
                            Text="{TemplateBinding Watermark}"
-                           IsVisible="{TemplateBinding Path=Text, Converter={Static local:StringNullOrEmpty.Instance}}">
-                </TextBlock>
+                           IsVisible="{TemplateBinding Path=Text, Converter={Static local:StringNullOrEmpty.Instance}}"/>
                 <TextPresenter Name="PART_TextPresenter"
                                CaretIndex="{TemplateBinding CaretIndex}"
                                SelectionStart="{TemplateBinding SelectionStart}"

+ 10 - 6
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs

@@ -6,25 +6,29 @@ using Perspex.Markup.Xaml.Data;
 
 namespace Perspex.Markup.Xaml.MarkupExtensions
 {
-    public class RelativeSourceExtension : MarkupExtension
+    public class BindingExtension : MarkupExtension
     {
-        public RelativeSourceExtension()
+        public BindingExtension()
         {
         }
 
-        public RelativeSourceExtension(RelativeSourceMode mode)
+        public BindingExtension(string path)
         {
-            Mode = mode;
+            Path = path;
         }
 
         public override object ProvideValue(MarkupExtensionContext extensionContext)
         {
-            return new RelativeSource
+            return new Binding
             {
+                Converter = Converter,
                 Mode = Mode,
+                SourcePropertyPath = Path,
             };
         }
 
-        public RelativeSourceMode Mode { get; set; }
+        public IValueConverter Converter { get; set; }
+        public BindingMode Mode { get; set; }
+        public string Path { get; set; }
     }
 }

+ 6 - 9
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs

@@ -6,28 +6,25 @@ using Perspex.Markup.Xaml.Data;
 
 namespace Perspex.Markup.Xaml.MarkupExtensions
 {
-    public class BindingExtension : MarkupExtension
+    public class RelativeSourceExtension : MarkupExtension
     {
-        public BindingExtension()
+        public RelativeSourceExtension()
         {
         }
 
-        public BindingExtension(string path)
+        public RelativeSourceExtension(RelativeSourceMode mode)
         {
-            Path = path;
+            Mode = mode;
         }
 
         public override object ProvideValue(MarkupExtensionContext extensionContext)
         {
-            return new Data.Binding
+            return new RelativeSource
             {
                 Mode = Mode,
-                SourcePropertyPath = Path,
             };
         }
 
-        public object Converter { get; set; }
-        public BindingMode Mode { get; set; }
-        public string Path { get; set; }
+        public RelativeSourceMode Mode { get; set; }
     }
 }

+ 2 - 1
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TemplateBindingExtension.cs

@@ -21,6 +21,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
         {
             return new Data.Binding
             {
+                Converter = Converter,
                 Mode = Mode,
                 Priority = BindingPriority.TemplatedParent,
                 RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent),
@@ -28,7 +29,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
             };
         }
 
-        public object Converter { get; set; }
+        public IValueConverter Converter { get; set; }
         public BindingMode Mode { get; set; }
         public string Path { get; set; }
     }