0

在我的灯开关应用程序中,我需要为每一行添加一个小图像控件,单击它时,它应该将您发送到详细信息屏幕。我制作了 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 始终为空,因为它试图在控件可用之前加载控件......任何解决方案?

4

2 回答 2

0

这些类型的初始化应该放在屏幕的Created方法中,这样可以保证屏幕上的所有控件都已创建。如果屏幕的任何方法(如InitializeDataWorkspaceCreatedSaving等)不在您的代码文件中,您可以使用屏幕编辑器中的Write Code下拉框创建它们。

于 2013-04-18T13:10:14.977 回答
0

我这样解决了:我在silverlight控件中捕获点击事件,而不是在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();
      });
    } 
于 2013-04-19T07:53:17.190 回答