Inject diferentes clases que implementan la misma interfaz usando Ninject

Estoy implementando el patrón de diseño del constructor para construir diferentes tipos de objetos gráficos que se mostrarán en una interfaz de usuario de WPF. Estoy usando Ninject como mi contenedor de COI. Sin embargo, estoy tratando de encontrar una solución extensible elegante.

Tengo unChartDirector objeto que toma unaIChartBuilder como una dependencia. Tambien tengoTemperatureChartBuilder yThresholdChartBuilder que implementanIChartBuilder. Quiero inyectar cualquieraTemperatureChartBuilder OThresholdChartBuilder aChartDirector según un evento que se active o según una llamada del cliente. He ilustrado mi problema a continuación en el código.

// ChartDirector also depends on this
kernel.Bind<IExample>().To<Example>();

// when called in Method X...
kernel.Bind<IChartBuilder>().To<TemperatureChartBuilder>();

// when called in Method Y...
kernel.Bind<IChartBuilder>().To<ThresholdChartBuilder();

// TemperatureChartBuilder is a dependency of ChartDirector, need a way to dynamically
// allocate which binding to use.
var director = kernel.Get<ChartDirector>();

// without Ninject I would do
var director = new ChartDirector(new TemperatureChartBuilder);

// or
var director = new ChartDirector(new ThresholdChartBuilder);

EDITAR

Parecido con la respuesta de Gary, y notando una ligera edición de que ChartDirector tiene otra dependencia, ahora quiero hacer algo como esto:

var director = kernel.Get<ChartDirector>().WithConstructorArgument(kernel.Get<IChartBuilder>("TemperatureChart"));

¿Es posible algo como esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta