Browse Source

Fixed the problem with binding converters.

Wasn't assigning the property in the markup extension ProvideValue.
D'oh.
pull/297/head
Steven Kirk 11 years ago
parent
commit
c988bdb387
  1. 3
      samples/XamlTestApplicationPcl/TextBox.paml
  2. 16
      src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs
  3. 15
      src/Markup/Perspex.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs
  4. 3
      src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TemplateBindingExtension.cs

3
samples/XamlTestApplicationPcl/TextBox.paml

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

16
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs

@ -6,25 +6,29 @@ using Perspex.Markup.Xaml.Data;
namespace Perspex.Markup.Xaml.MarkupExtensions 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) public override object ProvideValue(MarkupExtensionContext extensionContext)
{ {
return new RelativeSource return new Binding
{ {
Converter = Converter,
Mode = Mode, Mode = Mode,
SourcePropertyPath = Path,
}; };
} }
public RelativeSourceMode Mode { get; set; } public IValueConverter Converter { get; set; }
public BindingMode Mode { get; set; }
public string Path { get; set; }
} }
} }

15
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/RelativeSourceExtension.cs

@ -6,28 +6,25 @@ using Perspex.Markup.Xaml.Data;
namespace Perspex.Markup.Xaml.MarkupExtensions 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) public override object ProvideValue(MarkupExtensionContext extensionContext)
{ {
return new Data.Binding return new RelativeSource
{ {
Mode = Mode, Mode = Mode,
SourcePropertyPath = Path,
}; };
} }
public object Converter { get; set; } public RelativeSourceMode Mode { get; set; }
public BindingMode Mode { get; set; }
public string Path { get; set; }
} }
} }

3
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TemplateBindingExtension.cs

@ -21,6 +21,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
{ {
return new Data.Binding return new Data.Binding
{ {
Converter = Converter,
Mode = Mode, Mode = Mode,
Priority = BindingPriority.TemplatedParent, Priority = BindingPriority.TemplatedParent,
RelativeSource = new RelativeSource(RelativeSourceMode.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 BindingMode Mode { get; set; }
public string Path { get; set; } public string Path { get; set; }
} }

Loading…
Cancel
Save