Wednesday, August 29, 2012

Caliburn.Micro with lable not binding by convention

Caliburn.Micro with lable not binding by convention

I have been using Caliburn.Micro's binding via convention in Silverlight 5 and am loving it. Here is an example property from a ViewModel:

private String _vmStringProp = ""; public String VmStringProp {     get     {         return _vmStringProp;     }      set     {         _vmStringProp = value;         NotifyOfPropertyChange(() => VmStringProp);     } } 

This property is bound in the View just by naming:

<TextBox x:Name="VmStringProp" /> 

This works great. But if I change it to a TextBlock or Lable (example below) an exception is thrown.

<sdk:Label x:Name="VmStringProp" /> 

It works fine if you change it to bind like normal Silverlight but I would rather keep consistent throughout the project instead of having some bound via convention and others explicitly bound depending on what type of control. Does anyone know why I can't bind via convention with Labels and TextBlocks?

Answers & Comments...

Answer: 1

Caliburn.Micro comes with a set of default conventions for WPF/SL/WP7 but obviously not for every existing control, so the Silverlight sdk:Label is also missing.

You can find the built in conventions at the end of this article and a lots of info how conventions work.

Luckily it is very easy to add a new convetions just add the following code into your Bootstrapper's contructor:

public MyBootstrapper() {     ConventionManager         .AddElementConvention<Label>(Label.ContentProperty,                                      "Content",                                      "DataContextChanged");   } 
by : nemesvhttp://stackoverflow.com/users/872395




No comments:

Post a Comment

Send us your comment related to the topic mentioned on the blog