You can use XAML and Binding in XAML without Console Framework, in standalone application. To do this use need:
Binding
projectBindingMarkupExtension
and ConvertMarkupExtension
)XamlParser.CreateObjectFromXaml()
, you should set up reference in defaultNamespaces
to namespace you used
for BindingMarkupExtension
and ConvertMarkupExtension
(Or you will need to connect them always manually in XAML).XmlParser.CreateObjectFromXaml()
, you should pass dataContext
- object, whose class is implementing
INotifyPropertyChanged
and notifies about changed properties. This object will be passed to markup extensions and
they'll be able to bind to its properties.Simple two-way binding (TwoWay mode is default mode for objects implementing INotifyPropertyChanged
):
<TextBox Text="{Binding Path=Title}"/>
Binding for data flow from source to target only. DataContext object is always Source, so next markup
demonstrates data flow from dataContext
to StatusBar
:
<StatusBar Title="{Binding Path=GroupBoxTitle, Mode=OneWay}"/>
If you need data to bind only one time in initialization, you can use OneTime
mode - it works in same
direction as OneWay
works, but fires only when data binding is being set up:
<GroupBox Title="{Binding Path=GroupBoxTitle, Mode=OneTime}"/>
Also, when setting up a data binding, you can set converter to be used when data flows between Source and Target.
Data binding converters differs from XAML converters used to assign values to properties. Data binding converters
is designed for data binding exspecially and should implement IBindingConverter
interface. Example:
<StatusBar Title="{Binding Path=StatusCode, Mode=OneWay, Converter={Ref converter}}"/>
If you want to use XAML converter in bindings, you can write adapter for it, or add custom property to
BindingMarkupExtension
. May be, it will be implemented out of the box in future versions.