Я думаю, что могу ответить на вопрос о том, как обновить свойство DependencyProperty в вашем объекте canvas.
Чтобы проверить его, я бы определил метод «при изменении» для свойства зависимости.Здесь можно установить точку останова, чтобы убедиться, что свойство зависимости установлено.
class CanvaNetwork : Canvas
{
public CanvaNetwork ( ) { }
public static readonly DependencyProperty NewMouseOverProperty
= DependencyProperty.Register ( "NewMouseOver",
typeof (bool),
typeof (CanvaNetwork),
new PropertyMetadata (false, OnNewMouseOverChanged)) ;
public bool NewMouseOver
{
get { return (bool)GetValue (NewMouseOverProperty); }
set { SetValue (NewMouseOverProperty, value); }
}
public static void OnNewMouseOverChanged ( DependencyObject d, DependencyPropertyChangedEventArgs e )
{
}
}
В шаблоне данных необходимо определить триггеры в стиле.
<DataTemplate DataType="{x:Type local:Node}">
<local:CanvaNetwork x:Name="ItemCanvas_Node"
Background="red" Height="100" Width="100">
<Path x:Name="Path_NodeProcess"
Stroke="Green"
Fill="Gray"
Stretch="None"
Data="{Binding Path =Geometryform}"
Visibility="{Binding Path=Visibility}">
</Path>
<local:CanvaNetwork.Style>
<Style>
<Setter Property="local:CanvaNetwork.NewMouseOver" Value="False" />
<Style.Triggers>
<Trigger Property="Canvas.IsMouseOver" Value="True">
<Setter Property="local:CanvaNetwork.NewMouseOver" Value="True" />
</Trigger>
</Style.Triggers>
</Style>
</local:CanvaNetwork.Style>
</local:CanvaNetwork>
</DataTemplate>
Вы можете толькообновите свойство с помощью триггера, если свойство по умолчанию установлено в стиле.
Чтобы это работало, я удалил ваш атрибут NewMouseOver = "{Binding MyMouseOver}" .Пункты 1 и 2 из вашего списка работают, но удаление этого атрибута означает, что пункт 3 не работает.
Тем не менее, я думаю, что вы, вероятно, в любом случае используете неправильный подход.Не лучше ли подключить событие MouseOver к свойству команды в классе Node, как описано здесь:
Как создать событие MouseOver в MVVM?