Привязка полилинии. Что я делаю не так?

#c# #wpf #data-binding #polyline

#c# #wpf #привязка данных #полилиния

Вопрос:

Я пытаюсь сделать то, что мне казалось простым: нарисовать линии списка точек. Если я помещу список статически в xaml моего окна, все будет в порядке. Если я выполняю привязку, то ничего не отображается.

оконный код:

 <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Polyline Stretch="Fill" Grid.Column="0" Name="polyline" Stroke="Red" DataContext="{Binding Points}">
    </Polyline>   
</Grid>
  
 public partial class testWindow2 : Window
{
    AudioSignalModelView audioSignalModelView;

    public testWindow2()
    {
        InitializeComponent();

        audioSignalModelView = new AudioSignalModelView();

        this.DataContext = audioSignalModelView;
    }
}

public class AudioSignalModelView
{
    public AudioSignalModelView()
    {
        Point pointA = new Point {X=0,Y=0};
        Point pointB = new Point { X = 0.2, Y = 0.4 };
        Point pointC = new Point { X = 0.8, Y = 0.1 };
        Point pointD = new Point { X = 1, Y = 1 };

        Points.Add(pointA);
        Points.Add(pointB);
        Points.Add(pointC);
        Points.Add(pointD);
    }

    private AudioSignalTest audioSignalTest;

    private PointCollection _points = new PointCollection();
    public PointCollection Points
    {
        get { return _points; }
    }
}
  

Я думаю, что привязка выполняется каким-то образом, потому что, если я помещаю точку останова в средство получения свойства Points, оно вызывается системой…

Что явно неправильно в моем коде?

Ответ №1:

Вы хотите привязать к Points свойству, а не к DataContext .

 <Polyline Stretch="Fill" Grid.Column="0"
          Name="polyline" Stroke="Red"
          Points="{Binding Points}">  <-- Here
</Polyline>   
  

Страница MSDN