我有查看模型BindingList<Wave>
。
这是模型(仅显示一个属性)。
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 :(得分:0)
您没有使用Binding Mode = TwoWay
。
<Polyline Points="{Binding ., Mode=TwoWay, Converter={StaticResource PlotterConverter}}"/>