Hi Len,
Sorry I forgot to respond to this last week.
I just briefly looked over those two classes. Is it possible to accomplish your goal by overriding the protected virtual method CurveCanvas.OnMouseDown()? Or do you need to modify the logic that we have in there?
If you can simply derive from CurveCanvas, then it looks like you can pass in your derived class object to the CurveEditingControl constructor. Then you'll have to use the constructor of CurveEditor that takes a CurveEditingControl. To make use of your own CurveEditor object, you have to remove the "typeof(CurveEditor)" from the MEF TypeCatalog and add in the object directly instead, like this:
var catalog = new TypeCatalog(
...
//typeof(CurveEditor),
...
);
// Set up the MEF container with these components
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();
var curveCanvas = new CustomCurveCanvas(); //customizes the mouse-down behavior
var curveEditingControl = new CurveEditingControl(curveCanvas);
batch.AddPart(new CurveEditor(curveEditingControl));
container.Compose(batch);
I didn't check that this compiles, but hopefully it's close enough. :-)
If you need to modify the logic inside CurveCanvas.OnMouseDown(), you could try submitting a pull request or emailing me the diff file that introduces a customization point somehow.
--Ron