1
我正在學習MVVM設計模式,所以我試圖將某些操作更改爲Command。
下面是一個示例,MainWindow具有一個Canvas作爲容器,用戶可以通過拖動繪製矩形。所以我寫的代碼如下
如何將三步操作轉換爲WPF中的命令?
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
StartPoint = e.GetPosition(this);
shape = new Rectangle();
shape.Fill = Brushes.Transparent;
shape.Stroke = Brushes.Black;
shape.StrokeThickness = 1;
this.Children.Add(shape);
}
protected override void OnMouseMove(MouseButtonEventArgs e)
{
Point endpoint = e.GetPosition(this);
double left = Math.Min(endpoint.X, StartPoint.X);
double top = Math.Min(endpoint.Y, StartPoint.Y);
shape.Margin = new Thickness(left, top, 0, 0);
shape.Width = Math.Abs(endpoint.X - StartPoint.X);
shape.Height = Math.Abs(endpoint.Y - StartPoint.Y);
shape.Stroke = Brushes.Black;
shape.StrokeThickness = 2;
}
protected override void OnMouseLeave(MouseButtonEventArgs e)
{
//end
}
因爲也許我想補充Undo功能,使矩形將會消失撤消調用後,所以我希望讓這些3個步驟爲一個命令。我應該怎麼做?謝謝。
我想你需要的所有3種方法,雖然可以添加/刪除在'MouseDown'和'MouseUp'事件的相關處理程序所以你只需要將一個事件連接到你的UI。至於撤銷功能,當在'MouseUp'的'List'中創建每個矩形時,如何存儲每個矩形,以便在撤消 – Rachel
時刪除列表中的最後一項。 – Alan