2012-03-08 15 views
1

Microsoft Visio図面をSilverlightコンテンツを含むWebサイトとしてエクスポートすることは可能です。これはblog-postに記載されています。SilverlightアプリケーションにVisioエクスポートされたXAMLを統合する

そのような輸出の出力は以下の通りである:

  • xaml_1.xaml(コントロールの構造を含む)
  • data.xmlファイル(例えば等ラベルとしてすべてのテキストコンテンツを含む)
  • いくつかのJavaスクリプトは、Silverlightのコンテナと
  • * .htmのページなど*の.cssや画像
として
  • 他のファイルをファイル

    エクスポートされたXAMLコードを別の既存のSilverlightアプリケーションに統合したいと考えています。私は実行時に動的にXAMLコードをロードする方法を教えてくれたblog-postが見つかりました。

    私が知りたいのは、XAMLファイルとdata.xmlを "マージ"する方法と、特定のテキストを変更するためにXAMLコードの項目への参照を取得する方法です。

  • 答えて

    0

    私は、生成されたXAMLをちょっと微調整する必要があると思います。残念ながら、Visioはすべての単一文字のグリフを生成します。実行時にテキストを変更する場合は、このグリフを削除し、必要なコントロール(TextBlockなど)を自分で追加する必要があります。

    XamlをSilverlightに読み込むには、XamlReader.Loadを使用します。あなたがここで見つける良い説明:http://blogs.silverlight.net/blogs/msnow/archive/2008/10/09/silverlight-tip-of-the-day-60-how-to-load-a-control-straight-from-xaml.aspx

    あなたが無視できるすべてのJavaScriptファイルとHTMLファイル、コントロールを識別するために必要なXMLファイル。 XMLのIDは、XAMLファイル内の対応する要素を参照します。

    +1

    基本的に、XMLファイルを解析して要素のIDを取得する必要があります。ここで、新しいオブジェクトを挿入する必要があります(例:TextBlock)? – froeschli

    1

    関連するxaml jsファイル(xaml_1.jsなど)には、(XAML) 'name'文字列からシェイプIDを読み取り、frameset.jsのOnShapeClickを呼び出すhandleMouseUp関数があります。このメソッドは、jsベースのWeb出力タイプとして保存されているすべてのメソッドに共通のメソッドで、詳細テーブルを作成するための他のメソッドを呼び出したり、data.xmlにあるハイパーリンクを取得したりします。 frameset.jsでFindShapeXML関数を調べると、ページIDと形状IDに基づいて適切なデータが得られることがわかります(シェイプIDはVisio自体のページに固有です)。

    データバインドまたはダイナミックシェイプテキストを作成する上で、グリフの回避策の1つは、@slfanハイライトがテキストの出力を妨げることです。たとえば、VisioでSave As Webを実行する前に、すべての図形をループして、HideText ShapeSheetセルをtrueに設定できます。これにより、生成されているすべてのグリフxamlが無効になり、data.xmlのテキスト文字列にはまだアクセスできます。私はあなたが正しいフォントのスケーリングから恩恵を受けることはないだろうと思うが、あなたのシナリオに依存する。スケールを取得することが本当に重要だった場合は、グリフ要素のRenderTransform属性(プロパティ要素の構文ではなく属性の構文で説明されています)を解析できます。

    Visioがアプリケーションでどのように動作するかを反映しているためグリフがあります。つまり、Visioではシェイプのテキスト内の個々の文字を選択し、さまざまなフォントと書式を適用できますが、私はグリフのコレクションを捨てて、@slfanが示唆するようにTextBlockを使用するように誘惑されるでしょう。

    関連する問題