私は実際に、 MainPageで定義された Canvas にいくつかのUIElementを非同期的に追加しようとしています。
私が理解しているようにUIElement、 a に追加する基本的な方法Canvasは、彼のUIElementCollectionに追加することです。たとえば、 Line を使用して、次のようにする必要があります。
        Line line = new Line();
        // Line attributes
        line.Stroke = new SolidColorBrush(Colors.Purple);
        line.StrokeThickness = 15;
        Point point1 = new Point();
        point1.X = 0;
        point1.Y = 0;
        Point point2 = new Point();
        point2.X = 480;
        point2.Y = 720;
        line.X1 = point1.X;
        line.Y1 = point1.Y;
        line.X2 = point2.X;
        line.Y2 = point2.Y;
        // Line attributes
        MyCanvas.Children.Add(line);
描画するために、この Canvas にアクセスする必要があるGraphicsを呼び出す Class があるとします。
 public class Graphics
 {
     public void drawLine()
     {
            //Using Dispatcher in order to access the main UI thread
            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
               Line line = new Line();
               // Line attributes
               /**
                *  Here I want to access the Canvas of the MainPage
                *  I have no Idea what to put here !!!
                *
                **/
            });
      }
  }
「ここに何を入れたらいいかわからない!!!」というところに MainPage Canvasに直接アクセスしようとした--> FAIL
UIElement を追加して Canvas に渡すためにMainPageでpublic static UIElementCollection を宣言しようとしましたが、UIElementCollection にはコンストラクターがないため不可能です --> FAIL
しかし、それらのアイデアは汚いコーディングのようで、あまりエレガントではありません。したがって、私の調査を通じて、MVVMが魔法を行うべきであることがわかりました。しかし、私が見つけたすべてのチュートリアルは、私の場合は使用できない xaml ファイルを介してデータ入札を行っていました。
だから私は2つの質問があります:
最初: Canvas の UIElementCollection はどのように使用しますか? (JAVA の Paint や Repaint のように、誰がそれを描画するかという隠しメソッドはありますか?)
2 番目: MVVM パターンに従いたい場合、MainPageを View、Graphicsクラスを ViewModel、UIElementを Model と見なすことができますか?