25

Expression Blend 3 から Visual Studio に戻ると、Blend が "d:LayoutOverrides" プロパティを XAML に便利に追加したことがよくあります。ASP.NET デザイナーと共に育った私は、自分で入力しないものは当然信用できないので、見かけたらすぐに削除します。

「d:」プロパティはデザイナー専用であり、ランタイムに影響を与えないことは知っていますが、このプロパティが何をするのか、そしてなぜ Blend がマークアップ全体にそれらを使用するほどしつこいのかについて、誰か洞察を提供できますか?

<Border d:LayoutOverrides="Height" />
4

2 に答える 2

33

これは、Blend が XAML をデザイン モードで表示する方法を認識できるようにするためのものです。具体的には、コンテナーを埋めるために伸びる流動的なレイアウトがある場合、Blend がデザインの高さを知る明確な方法がありません。LayoutOverrides はそれを定義します。

これらの LayoutOverride 設定エントリは、ユーザー (または Blend を実行している別の人) がデザイン サーフェイスの要素のサイズを手動で変更すると追加されます。コード全体 (Border 要素など) にそれらが見られる場合:

  1. 通常、目立った影響なしにそれらを削除できます
  2. Blend の使用方法を確認することができます。具体的には、親 cotainer のサイズを適切なサイズ (UserControl / LayoutRoot) に設定してから、流動的なレイアウトに基づいて子のサイズを設定する必要があります (例: パディングとマージンまたは * サイズ)。

Blend の無視できる属性はコンパイル時に取り除かれ、アプリケーションのパフォーマンスには影響しないことに注意してください。したがって、コードの読みやすさを向上させるためにそれらを削除したい場合がありますが、アプリケーションの実行方法には影響しません。

于 2009-09-11T16:03:08.970 に答える
2

d:LayoutOverrides

プロパティが実行時に固定値に設定されているが、設計時にそれをオーバーライドしたい場合は、d:LayoutOverrides 属性を使用できます。設計時に無視する必要があるすべてのプロパティを、セミコロンで区切ってリストできます。

(ソース: http://wpftutorial.net/DesigntimeVsRuntime.html )

于 2012-07-02T00:07:35.250 に答える