0
我有將自定義用戶控件添加到畫布的代碼。我原本是在Canvas的MouseRightButtonDown事件中使用它,但後來它將它移動到在ViewModel中觸發的集合更改事件。當我從CollectionChanged事件調用完全相同的方法時,UI不會更新以反映畫布上的UserControl。但是,當我使用畫布上鼠標事件的完全相同的代碼時,它的工作原理非常精美。以編程方式添加到畫布
我已經做了一些挖掘和嘗試了以下解決的事情無濟於事:
調用畫布
切換可見性屬性,嘗試更新UI的UpdateLayout請方法。
使用UserControl的Dispatcher調用它來調用匿名委託:Dispatcher.BeginInvoke((=)code>;
這裏是我使用的代碼示例:
CustomUserControl stub = new CustomUserControl();
stub.Width = 10;
stub.Height = 10;
stub.SetValue(Canvas.LeftProperty, xCurrent);
stub.SetValue(Canvas.TopProperty, yCurrent);
stub.MouseLeftButtonDown += this.Element_MouseLeftButtonDown;
stub.MouseMove += this.Element_MouseMove;
stub.MouseLeftButtonUp += this.Element_MouseLeftButtonUp;
this.Dispatcher.BeginInvoke(() =>
{
drawCanvas.Children.Add(stub);
drawCanvas.Visibility = Visibility.Visible;
this.Visibility = Visibility.Visible;
});