2016-02-27 3 views
0

У меня есть модель модели BindingList<Wave>.Связывание «BindingList» с DataTemplate с конвертером не обновляется

вот модель (показано только одно свойство).

public class Wave : INotifyPropertyChanged 
{ 
    private double _period; 

    public double Period 
    { 
     get { return _period; } 
     set 
     { 
      if (value.Equals(_period)) return; 
      _period = value; 
      OnPropertyChanged(nameof(Period)); 
     } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected virtual void OnPropertyChanged(string propertyName = null) 
    { 
     PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

Ниже я пытаюсь привязать модель взгляда к холсту и нарисовать их полилинией, которая работает, но только один раз.

Проблема в том, что при изменении свойств, которые не обновляется, просмотр не изменяется. (конвертер не срабатывает после первого раза).

<ItemsControl ItemsSource="{Binding WaveCollection, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}}"> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <Canvas /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Polyline Points="{Binding Converter={StaticResource PlotterConverter}}"/> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

PlotterConverter просто возвращает PointCollection. с некоторой формулой, но это не важно здесь.

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    return new PointCollection(GetPoints(value as Wave)); 
} 

ответ

0

Вы не используете Binding Mode = TwoWay.

<Polyline Points="{Binding ., Mode=TwoWay, Converter={StaticResource PlotterConverter}}"/> 
+0

спасибо, но он по-прежнему не обновляется. конвертер срабатывает только в первый раз. либо я использую режим одностороннего или двухстороннего привязки. –

+2

@ M.kazemAkhgary Если вы удалите конвертер, можете ли вы увидеть изменение значений? – AnjumSKhan

+0

конвертер преобразует 'Wave' в' PointCollection'. Это невозможно, потому что свойство Points требует PointCollection. 'Wave' просто держит формулу для создания точек. формула является динамической. позвольте мне попытаться установить PointCollection внутри модели Wave. –

Смежные вопросы