Есть следующая разметка:
<Path Stroke="Red" StrokeThickness="1" Name="Way">
<Path.Data>
<PathGeometry>
<PathFigure IsClosed="False" StartPoint="15,670">
<ArcSegment Point="{Binding Source=point, Path=Source}" Size="20,20" SweepDirection="Clockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
В коде есть Point
:
public Point point = new Point();
Почему не работает привязка к нему?
Привязка возможна только к свойствам (а не к полям):
public Point point {get;set;} = new Point();
...
<ArcSegment Point="{Binding Path=point}" Size="20,20"
SweepDirection="Clockwise"/>
Возможно у ваша дуга находится за пределами контейнера, поэтому её не видно.
Набросал простой пример, чтобы показать как работает привязка к Point
:
MainVM.cs:
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Timers;
using System.Windows;
namespace WpfTest
{
class MainVM : INotifyPropertyChanged
{
Point point;
public Point Point
{
get => point;
set => Set(ref point, value);
}
public MainVM()
{
Random random = new Random();
var timer = new Timer(500);
timer.Elapsed += (o, e) => Point = new Point(random.Next(100), random.Next(100));
timer.Start();
}
protected void Set<T>(ref T field, T value, [CallerMemberName] string propertyName = "")
{
field = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
MainWindow.xaml:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" WindowStartupLocation="CenterScreen"
Title="MainWindow" Height="150" Width="300">
<Grid>
<Path Stroke="Red" StrokeThickness="1" Name="Way">
<Path.Data>
<PathGeometry>
<PathFigure IsClosed="False" StartPoint="50,50">
<ArcSegment Point="{Binding Point}" Size="20,20" SweepDirection="Clockwise"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</Grid>
</Window>
MainWindow.xaml.cs:
using System.Windows;
namespace WpfTest
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new MainVM();
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возникла такая проблема: код запускается, но не считывает текстовый файл, тем более не создает новыйПодскажите как можно изменить