Хм, повторяя мои комментарии выше, вероятно, у вас есть что-то вроде этого
public class PathViewModel
{
public ObservableCollection<Point> Points { get; private set; }
PathViewModel ()
{
Points = new ObservableCollection<Point> ();
}
}
просто расширяйте эту модель, реализуя INotifyPropertyChanged
и создавая явное свойство для последней точки в пути,
public class PathViewModel : INotifyPropertyChanged
{
private static readonly PropertyChangedEventArgs OmegaPropertyChanged =
new PropertyChangedEventArgs ("Omega");
// returns true if there is at least one point in list, false
// otherwise. useful for disambiguating against an empty list
// (for which Omega returns 0,0) and real path coordinate
public bool IsOmegaDefined { get { return Points.Count > 0; } }
// gets last point in path, or 0,0 if no points defined
public Point Omega
{
get
{
Point omega;
if (IsOmegaDefined)
{
omega = Points[Points.Count - 1];
}
return omega;
}
}
// gets points in path
public ObservableCollection<Point> Points { get; private set; }
PathViewModel ()
{
Points = new ObservableCollection<Point> ();
}
// interfaces
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
// private methods
private void Points_CollectionChanged (
object sender,
NotifyCollectionChangedEventArgs e)
{
// if collection changed, chances are so did Omega!
if (PropertyChanged != null)
{
PropertyChanged (this, OmegaPropertyChanged);
}
}
}
единственное, на что стоит обратить внимание, - это запуск события изменения свойства при изменении коллекции. это уведомляет WPF, что модель изменилась.
Теперь, на земле Xaml,
<!-- assumes control's DataContext is set to instance of PathViewModel -->
<Path
Stroke="Black"
x:Name="path1"
Data="{Binding Path=Points}"
Margin="0"
StrokeThickness="4"/>
<!-- or whatever control you like, button to demonstrate binding -->
<Button
Content="{Binding Path=Omega}"
IsEnabled="{Binding Path=IsOmegaDefined}"/>
Хорошо, поэтому IsEnabled
выше не будет скрывать изображение \ кнопку, но привязка к Visibility
- это простой вопрос либо а) изменения нашей модели представления для предоставления свойства видимости, либо б) связывания со значением конвертер, который преобразует наше логическое значение в перечисление видимости.
Надеюсь, это поможет! :)