Kontrola nad wieloma TextBlockami WPF z kodu programu

0

Witam

Tworzę aplikację która na podstawie liniowej formuły funkcji matematycznej zapisanej w ciągu znaków (np. "(9*9)/3+8^3") zbuduje w Canvas za pomocą TextBlocków jej obraz w powszechnie przyjętym zapisie matematycznym (uwzględniającym kreski ułamkowe, indeks górny w przypadku potęgowania i oznaczenie pierwiastka liczby). Zabieram się niestety do tego jak pies do jeża - nie wiem z której strony zacząć.

W jaki sposób mogę tworzyć kolejne TextBlocki, które mógłbym kontrolować za pomocą ich nazw np. tb1, tb2, tb3. Mam już metodę dzięki której mogę dodawać nowe TextBlocki (kod poniżej), jednak nie wiem jak parametry poszczególnych z nich kontrolować. Nie wiem jak je wyszczególnić, wiem tylko że muszę je dodać jako Children do Canvas.

        private void CanvasAddExpression(double x, double y, string text, Color color, double size)
        {
            TextBlock textBlock = new TextBlock();

            textBlock.Text = text;
            textBlock.Foreground = new SolidColorBrush(color);
            textBlock.FontSize = size;

            Canvas.SetLeft(textBlock, x);
            Canvas.SetTop(textBlock, y);

            Canvas.Children.Add(textBlock);
        } 
1

Może za pomocą MVVM? http://stackoverflow.com/questions/22324359/add-n-rectangles-to-canvas-with-mvvm-in-wpf
Potrzebujesz utworzyć view model, czyli klasę, która będzie zawierała właściwości odpowiadające tym parametrom, którymi chcesz manipulować (np. double x, double y, string text, Color color, double size). Potem w XAML-u mówisz tylko, że kolekcja tych obiektów ma być pokazana na panelu typu Canvas, a każdy obiekt będzie reprezentowany przez TextBlock, którego właściwości są ustawiane na podstawie odpowiednich właściwości view modelu. View modele mogą być przechowywane w słowniku i wtedy nazwa to będzie klucz. Albo nazwa może też być właściwością w view modelu.

0

Zacząłem się bawić z WrapPanelem i StackPanelem (dla ułamków), ale zapewne wypróbuję także Twoją koncepcję :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1