在我的lightswitch应用程序中,我需要为每一行添加一个小图像控件,当点击它时,它应该将您发送到详细信息屏幕。我制作了silverlight控件并将其添加到lightswitch应用程序中。
partial void VidContentItemRessources_Loaded(bool succeeded) {
int index = 0;
foreach (VidContentItemRessourcesItem cust in this.VidContentItemRessources) {
this.FindControlInCollection("ImageLinkIcon", this.VidContentItemRessources.ElementAt(index))
.ControlAvailable += (s, e) => {
MyLinkImage = (e.Control as LinkImage);
MyLinkImage.MouseLeftButtonDown += MyLinkImage_MouseLeftButtonDown;
};
index++;
}
}
但是,如果我这样做,我得到一个错误,可用的事件控件不能用于集合中的控件..
所以我试着这样做
LinkImage neco = this.FindControlInCollection("ImageLinkIcon", this.VidContentItemRessources.ElementAt(index)) as LinkImage;
neco.MouseLeftButtonDown += MyLinkImage_MouseLeftButtonDown;
但是然后neco总是为null,因为它试图在控件可用之前加载控件......任何解决方案都可以吗?
答案 0 :(得分:0)
这些类型的初始化应该放在屏幕的 Created 方法中,这样就可以保证屏幕上的所有控件都已创建。如果任何屏幕的方法(如 InitializeDataWorkspace , Created , Saving 等)不在您的代码文件中,您可以使用它们创建它们屏幕编辑器中的 Write Code 下拉框。
答案 1 :(得分:0)
我这样解决了: 我在silverlight控件中捕获click事件比在lightsiwtch中调用方法
public void MouseClick(object sender, MouseButtonEventArgs e) {
var objDataContext = (IContentItem)this.DataContext;
var Screen = (Microsoft.LightSwitch.Client.IScreenObject)objDataContext.Screen;
Screen.Details.Dispatcher.BeginInvoke(() => {
Screen.Details.Methods["DoImageLinkEvent"]
.CreateInvocation(null).Execute();
});
}