1
 I have control like this

<UserControl x:Class="VideoControl.VideoControl" Loaded="getProperty"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
</UserControl>

そして、私はこのような方法を持っています

private void getProperty(object sender, RoutedEventArgs e) {
  var objContext = (IContentItem)this.DataContext;
  var Scrn = (Microsoft.LightSwitch.Client.IScreenObject)objContext.Screen;
  var anonObject = Scrn.Details.Properties["VidContentItemRessourcesItem"].Value;

    string result= anonObject.GetType().GetProperty("AssetPubLocator").GetValue(anonObject, null).ToString();

}

しかし、これを実行すると、ライトスイッチ画面がロードされる前に定義済みのロードされたsilverlight関数が呼び出されるため、オブジェクトの結果はnullになります。したがって、私の質問は、画面が何らかの方法でロードされた後にこのメソッドを呼び出す方法です(ボタンをクリックしません)。

4

1 に答える 1

0

わかりました、私はこのようにそれを解決しました

 // My control property
public MyControlType MyControl;

    partial void MyEntity_Loaded(bool succeeded) {

      this.SetDisplayNameFromEntity(this.MyEntity);
      // Open in new Thread
      Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(() => {
        this.FindControl("VideoControler").ControlAvailable += (s, e) => {
          // Loading Control
          MyControl = (e.Control as MyControlNamespace.MyControlType);
        };

        // Calling method in Control and sending property there :-)
        MyControl.PropertiesLoaded(this.MyEntity.SomeString);
      });
    }
于 2013-04-02T13:34:44.900 に答える