Использование DataTemplate с различными формами в авалонииC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Использование DataTemplate с различными формами в авалонии

Сообщение Гость »

Я только начал изучать Avalonia, и я работаю над проектом, где пользователь может создавать диаграммы с разъемами и формами (прямоугольники, эллипсы ....). < /p>
Я решил создать базовый класс формы и, на данный момент, 2 полученных Rectanglemodel и Ellipsemodel. Эти модели в настоящее время пусты.
Важными здесь являются соответствующие виды, которые обладают всеми свойствами, необходимыми для отображения форм в XAML: < /p>

Код: Выделить всё

public partial class ShapeViewModel : ObservableObject {

readonly ShapeModel shapeModel;

[ObservableProperty]
private int x;

[ObservableProperty]
private int y;

[ObservableProperty]
private int width;

[ObservableProperty]
private int height;

[ObservableProperty]
private Brush fill;
public Type ShapeType { get => shapeModel.GetType(); }

public ShapeViewModel(ShapeModel shapeModel, int x, int y, int width, int height, Brush fill) {
this.shapeModel = shapeModel;
X = x;
Y = y;
Width = width;
Height = height;
Fill = fill;
}
}
< /code>
Shapemodel, опять же, бесполезен на данный момент как свойство Shapetype.public partial class RectangleViewModel : ShapeViewModel {

public RectangleViewModel(ShapeModel shapeModel, int x, int y, int width, int height, Brush fill) : base(shapeModel, x, y, width, height, fill) { }
}
< /code>
Я создаю «DrawingsView» и «DrawingsViewModel»: < /p>
public partial class DrawingsViewModel : ObservableObject {
[ObservableProperty]
private ObservableCollection shapes;
public DrawingsViewModel() {
Shapes = new ObservableCollection(); //just for testing
Shapes.Add(new RectangleViewModel(new RectangleModel(), 100, 100, 200, 200, new SolidColorBrush(Colors.Beige)));

Shapes.Add(new EllipseViewModel(new EllipseModel(), 200, 200, 200, 200, new SolidColorBrush(Colors.Blue)));
}
[RelayCommand]
public void AddShape(ShapeViewModel shape) {
Shapes.Add(shape);
}
}












< /code>
Чтобы дифференцировать объекты в коллекции форм виртуальной машины, я создал следующие шаблоны в app.axaml: < /p>









< /code>
Формы действительно правильно дифференцированы и окрашены, а визуальное дерево для форм правильно «Drawingviews -> ... -> itempresenter -> canvas -> contentpresentter -> прямоугольник (или эллипс).
Проблема в том, что я не могу установить границы смира. (0,0).



Но это не работает, так как свойства, с которыми я связываюсь, не находятся в View DataContext.

Подробнее здесь: https://stackoverflow.com/questions/796 ... n-avalonia
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Использование DataTemplate с различными формами в авалонии
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Использование DataTemplate с различными формами в авалонии
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Несколько экземпляров одного класса DBContext во время выполнения с различными DBContextOptions с различными реализациям
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Использование Magick.NET с веб-формами
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Использование Magick.NET с веб-формами
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»