DataContextを変更した直後にオブジェクトを測定しようとしていますが、オブジェクトのバインディングがすぐに更新されません。ここに私のコードは次のとおりです。DataContextが変更されたときすぐにバインドを更新する
// In MeasureOverride(Size)
m_inputWidth = 0.0;
Size elemSize = new Size(double.PositiveInfinity, RowHeight);
MapElementView ruler = new MapElementView();
// Measure inputs
foreach (MapElementViewModel elem in m_vm.InputElements)
{
ruler.DataContext = elem;
ruler.Measure(elemSize);
m_inputWidth = Math.Max(m_inputWidth, ruler.DesiredSize.Width);
}
私はビュービューモデルを表示するようにする必要がありますどのように大規模な測定ができるように私が更新にViewオブジェクトのバインディングをしたいです。私はデータを仮想化しているため、同じViewを再利用して測定します。
DataContextが変更されたときにバインディングを強制的に更新する方法を知っている人はいますか?
最終的にバインディングが更新されることに注意してください。
Viewには、ViewModelに基づいてサイズを変更する主な要素であるTextBlockが含まれています。 DataContextを変更した直後に、この要素のTextPropertyのBindingExpressionを調べましたが、UpdateTarget()を呼び出すと問題が解決されず、BindingExpression.DataItemがnullと表示されます。
EDIT: BindingExressionのステータスはUnattachedです。そのトリックは、どのようにそれをつけるかを理解することです。
いい考えです。私はそれを試みます。 –
次の例外があります。ディスパッチャの処理が中断されている間はこの操作を実行できません。 レイアウト中にWPFがDispatcherをロックするようです。 MeasureOverride()でこのコードを実行しています –