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 は、利用可能になる前にコントロールをロードしようとしているため、常に null です...解決策はありますか?

4

2 に答える 2

0

私はこのように解決しました:lightsiwtchでメソッドを呼び出すよりも、Silverlightコントロールでクリックイベントをキャッチします

   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 に答える
0

これらのタイプの初期化は、画面のCreatedメソッドで行う必要があります。これにより、画面上のすべてのコントロールが作成されていることが保証されます。画面のメソッド ( InitializeDataWorkspaceCreatedSavingなど) のいずれかがコード ファイルにない場合は、画面エディターの [コードの記述] ドロップダウン ボックスを使用して作成できます。

于 2013-04-18T13:10:14.977 に答える