views:

177

answers:

2

Is a separate WPF value converter object instantiated for each binding that a particular value converter class is used in?


I am trying to create a two-way bit-to-boolean value converter. I would like to be able to bind a bool property (such as IsChecked) to a bit in a value type (like a ushort). I'm using the converter's parameter arguments to specify the bit. Implementing the ConvertBack() method is easy, but Convert() is little trickier.

In Convert() I need to know what the value of the entire ushort is so I can toggle just the single bit I am interested in. I was thinking of just using a member variable in my value converter class to temporarily store this whenever ConvertBack() is called, thus leading to the above question: does each binding get its own value converter instance?

+1  A: 

Create a constructor and destructor in your converter and set breakpoints within to tell for sure. I just created a simple example and it looks like only one converter was created for my multiple viewmodels that were using the constructor

qntmfred
I also did this and had the same result--it became obvious that only one converter would be instantiated when I declared it as a single static resource in my XAML.
emddudley
+2  A: 

If you use a converter defined in your resources, it will be shared amongst your properties.

If you need unique converters: If you create a specific converter for a property, however, it will not be shared. Either option is workable. You can even use multiple converters (of the same type, with different keys) in your resources, which will create unique instances.

Reed Copsey