| 

.NET C# Java Javascript Exception

4
Ich bin gerade dabei mich mit MEF in Silverlight auseinanderzusetzen.
Leider habe ich ein kleines Problem.

Ich möchte gerne in einem Part ein Event auslösen und dieses im Hostprojekt abonnieren. Die MEF-"Magic"-Komponente erzeugt ein Singleton meiner Configuration, wie aber komme ich an diese Instanz in meiner Part-Komponente?

Mein Contract:
public  delegate void DataChanged(object sender, EventArgs args);

public interface IModule
{
HyperlinkButton GetMenuItem();
event DataChanged DataChanged;
}


Meine Hostimplementierung:
[Import(typeof(IModule), AllowDefault = true, AllowRecomposition = true)]
public IModule Module { get; set; }

public void OnImportsSatisfied()
{
if (Module == null)
return;

var menuitem = Module.GetMenuItem();
Module.DataChanged += new DataChanged(Module_DataChanged);
//...
}

void Module_DataChanged(object sender, EventArgs args)
{
//...
}


Meine Partimplementierung (Configuration):
[Export(typeof(IModule))]
public class Configuration : IModule
{
public HyperlinkButton GetMenuItem()
{
return new HyperlinkButton
{
Content = "Editor",
Tag = new ExcelTemplateEditor()
};
}

public event DataChanged DataChanged;
public void OnDataChanged(object sender, EventArgs args)
{
if (DataChanged != null)
DataChanged(sender, args);
}

}



In meine View (ExcelTemplateEditor) möchte ich nun das Event feuern, jedoch fehlt mir hier an der Stelle die Instanz der Configuration.
08.11.2011
Mario Priebe 6,0k 3 9
1 Antwort
2
Okay, es scheint ich hab es gebacken bekommen. Ich implementiere einfach das Interface , IPartImportsSatisfiedNotification in meiner View im Part und in der Implementierung hab ich dann die Configuration zur Hand:

[Import(typeof(IModule), AllowDefault = true, AllowRecomposition = true)]
public IModule Module { get; set; }

private Configuration module;
public void OnImportsSatisfied()
{
module = (Configuration)Module;
}


nun kann ich das Event feuern:

if (module != null)
module.OnDataChanged("Hello World", null);


und im Host kommt dieses auch an.
Vielen Dank für's zuhören : )
08.11.2011
Mario Priebe 6,0k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH