Необходимо, чтобы при изменении координаты линии свойство передовалось во ViewModel (координаты линии изменяются при перемещении курсора).
MainWindow.xaml
<Canvas Name="test" Background="Transparent" MouseMove="test_MouseMove"></Canvas>
MainWindow.xaml.cs
public partial class MainWindow : Window
{
private Line line;
public MainWindow()
{
InitializeComponent();
line = new Line
{
Stroke = Brushes.Black,
StrokeThickness = 1,
X1 = 100,
Y1 = 0,
};
test.Children.Add(line);
var viewModel = new ViewModel();
var myBinding = new Binding
{
Source = viewModel,
Path = new PropertyPath("X2"),
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
};
BindingOperations.SetBinding(line, Line.X2Property, myBinding);
}
private void test_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
var point = e.GetPosition(this);
line.X2 = point.X;
line.Y2 = point.Y;
}
}
ViewModel
internal class ViewModel
{
private double x2;
public double X2
{
get
{
return x2;
}
set
{
x2 = value;
}
}
}
ViewModel, вынесите это за пределы окна и подключите к окну какDataContext, не нужно ничего городить больше. 2. Ни в коем случае не создавайте и не управляйте элементами View через код, у вас для этого есть XAML, в котором все это и указывается. Вот этогоtest.Children.Add(line);вообще быть не должно. 3. Привязка аналогично, в XAML сделали{Binding свойство}и все, не надо в коде. – EvgeniyZ Aug 03 '23 at 17:50class MainWindow { public MainWindow() { DataContext = new VM(); } }илиvar window = new MainWindow { DataContext = new VM() }, два способа установки свойства, где в первом случае окно даже и не скомпилируется, если удалить класс VM, а в другом случае, мы снаружи устанавливаем это свойство, и о нем знает только внешний класс, не View. Почитайте ссылку, которую я дал выше. 2. "необходим" - ошибаетесь, я вам также дал ссылку, где я хоть одну строку C# там написал? Вы такого не найдете, но на экране у меня вдруг 4 круга, как? Внимание наItemsControl.<ItemsControl.ItemsPanel>
</ItemsControl.ItemsPanel>
https://stackoverflow.com/questions/8881865/saving-a-wpf-canvas-as-an-image как в данном примере
– thebrokenblow Sep 17 '23 at 16:17