Tôi đang cố gắng đo một đối tượng ngay sau khi thay đổi DataContext, nhưng ràng buộc cho đối tượng không được cập nhật sớm đủ. Đây là mã của tôi:Cập nhật Binding ngay lập tức khi DataContext thay đổi
// 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);
}
Tôi muốn các ràng buộc cho đối tượng Xem cập nhật để tôi có thể đo mức độ lớn mà Chế độ xem cần hiển thị ViewModel. Tôi đang tái sử dụng cùng một Chế độ xem để đo lường vì tôi đang ảo hóa dữ liệu.
Có ai biết cách buộc ràng buộc để cập nhật khi DataContext thay đổi không?
Lưu ý rằng liên kết sẽ cập nhật cuối cùng.
Chế độ xem chứa TextBlock là thành phần chính thay đổi kích thước dựa trên ViewModel. Tôi đã xem BindingExpression cho TextProperty trên phần tử này ngay lập tức sau khi thay đổi DataContext, nhưng gọi UpdateTarget() không khắc phục được sự cố và BindingExpression.DataItem dường như là rỗng.
EDIT: Trạng thái của BindingExression là Unattached. Bí quyết là tìm ra cách đính kèm nó.
Ý tưởng hay. Tôi sẽ thử xem. –
Tôi nhận được ngoại lệ sau: Không thể thực hiện thao tác này trong khi xử lý điều phối bị tạm ngưng. Có vẻ như WPF khóa Dispatcher trong khi bố trí. Tôi chạy mã này trong MeasureOverride() –