2

以下のコード サンプルでは、​​値コンバーターから Binding.DoNothing を返すと、依然として fallbackValue 評価が発生します。文脈に注意してください。

<Style>
<Setter Property="FontSize" Value="{Binding ActualHeight, RelativeSource={RelativeSource self}, Converter={...DoNothingReturningConverter...}/>

Binding.DoNothing のドキュメントでは、フォールバック値を使用しないことが明確になっています (ただし、「たとえば」を解釈する方法は 100% わかりません)。このトピックに関する他の回答は、同じことを前提としています。

実際には、依存関係プロパティ エントリに式の値を設定するために、フォールバック値の評価が試行されます。これは、評価されたスタイルがコントロールに適用されるときに、制御フローのコンバーター部分とは異なります。

この微妙な DoNothing 動作に関する追加情報を探しています。私の考えでは、これは WPF 4.5 のバグですが、仕様による可能性があります :-)

4

1 に答える 1

0

ああ、わかりました。これは、これまでで最も古典的なバインディング エラーです。実際にはエラーではなく、単なる情報です。横たわっているYouTubeの子猫と同じくらい有害です。

Wpf は、この時点で最初に Binding を処理します ActualHeight はゼロです。次に wpf がコントロールを測定し、次に wpf が ActualHeight 値を設定します。

ただし、ActualHeight がゼロの場合は Binding.DoNothing を返すため、値が設定されていないという情報が得られます。

それを無視してください。とにかく、出力ウィンドウにそのような情報を表示する必要はありません。これらの情報の表示をすべてオフにすると、デバッグ モードでのアプリケーションのパフォーマンスが向上します。

于 2013-10-08T19:52:32.333 に答える