The subject is that I’ve defined a customized control bound to a DataContext. And I wished to change the control template dynamically according to the DataContext’s specific property values.
There’re 2 ways I’ve thought of,but I have no idea about which way is better.
1.Do not use the control template in a ResourceDictionary and all details of the control are defined in C# code.Use the DependencyProperty CallBack method to render the control when DataContext’s property values change.
2.Define control template in the ResourceDictionary and use DataTrigger to change the ‘Control.Template’ property.
In my application,thousands of instances in this type would be created,so it’s really unacceptable if the ControlTemplate changging is not effective.
Could you please give me some advices or better solutions?
Using any standard WPF technique might not be effective if it would involve a thousands of instances of complex controls. See http://msdn.microsoft.com/en-us/magazine/dd483292.aspx.
I would go with MultiBinding + IMultiValueConverter to Control.Template dependency property, since Template would depend on multiple DataContext properties and would, perhaps, involve complex logic.