Injete classes diferentes que implementam a mesma interface usando o Ninject

Estou implementando o padrão de design do construtor para construir diferentes tipos de objetos gráficos a serem exibidos em uma interface do usuário do WPF. Estou usando o Ninject como meu contêiner de COI. No entanto, estou tentando encontrar uma solução extensível e elegant

Eu tenho umChartDirector objeto que recebe umIChartBuilder como uma dependência. Eu também tenhoTemperatureChartBuilder eThresholdChartBuilder que implementamIChartBuilder. Eu quero injetarTemperatureChartBuilder ORThresholdChartBuilder paraChartDirector, dependendo de um evento que foi disparado ou dependendo de uma chamada do cliente. Ilustrei meu problema abaixo no 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

Acoplado à resposta de Gary, e notando uma ligeira edição de que o ChartDirector tem outra dependência, agora quero fazer algo assim:

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

É algo assim possível?

questionAnswers(2)

yourAnswerToTheQuestion