1

Microsoft Visio 図面を、Silverlight コンテンツを含む Web サイトとしてエクスポートできます。これについては、このブログ投稿で説明されています。

このようなエクスポートの出力は次のとおりです。

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

エクスポートされた XAML コードを別の既存の Silverlight アプリケーションに統合したいと考えています。実行時に XAML コードを動的にロードする方法を教えてくれるこのブログ投稿を見つけました。

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

4

2 に答える 2

1

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

データ バインドまたは動的形状テキストの作成に関して、@slfan が強調表示するグリフの問題の 1 つの回避策は、テキストが出力されないようにすることです。たとえば、Visio で [Web として保存] を実行する前に、すべての図形をループ処理して、HideText ShapeSheetセルを true に設定できます。これにより、すべてのグリフ xaml が生成されなくなりますが、data.xml 内のテキスト文字列には引き続きアクセスできます。その場合、正しいフォント スケーリングの恩恵を受けることはないと思いますが、それはシナリオによって異なります。縮尺を正しくすることが本当に重要な場合は、グリフ要素の RenderTransform 属性 (プロパティ要素の構文ではなく、属性の構文で説明されています) を解析できます。

アプリケーションで Visio がどのように機能するかを反映しているため、グリフがあります (推測しています)。つまり、Visio では、図形のテキスト内の個々の文字を選択し、さまざまなフォントと書式を適用できますが、それが必要ない場合は、 @slfanが示唆するように、グリフコレクションを捨てて、TextBlockを使用したくなりました。

于 2012-03-21T21:44:08.347 に答える
0

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

XamlReader.Load を使用して、XAML を Silverlight に読み込むことができます。ここにある適切な説明: 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 ファイル内の対応する要素を参照します。

于 2012-03-21T11:48:27.093 に答える