Changing Data on Node Effecting Entire Category

I have the following template:


    <go:BooleanBrushConverter x:Key="theStrokeChooser" TrueBrush="Red" FalseBrush="Transparent" />
    <go:BooleanBrushConverter x:Key="backgroundChooser" TrueBrush="White" FalseBrush="Transparent" />
    <go:BooleanBrushConverter x:Key="valveFillChooser" TrueBrush="White" FalseBrush="Black" />
    <go:BooleanThicknessConverter x:Key="strokeThicknessChooser" TrueThickness="0" FalseThickness="1" />


    <DataTemplate x:Key="Valve">
        <go:SpotPanel
            go:Part.SelectionAdorned="True"
            go:Node.Location="{Binding Path=Data.Location, Mode=TwoWay}"
            go:Node.LocationSpot="Center"
            go:Part.Resizable="{Binding Path=Data.Resizable, Mode=OneTime}"
            go:Part.ResizeElementName="Container"
            go:Part.ResizeAdornmentTemplate="{DynamicResource NodeResizeAdornmentTemplate}"
            go:Part.Rotatable="{Binding Path=Data.Rotatable, Mode=OneTime}"
            go:Node.RotationAngle="{Binding Path=Data.Angle, Mode=TwoWay}"
            go:Part.Reshapable="False">

            <Grid Name="Container" 
                  Height="{Binding Path=Data.Height, Mode=TwoWay}"
                  Width="{Binding Path=Data.Width, Mode=TwoWay}">
                <Grid Background="{Binding Path=Data.isInPalette, Converter={StaticResource backgroundChooser}}">
                    <FrameworkElement.ToolTip>
                        <TextBlock Text="{Binding Path=Data.Text}" />
                    </FrameworkElement.ToolTip>

                    <Viewbox Stretch="Fill">
                        <Grid>
                            <Path Fill="{Binding Path=Data.IsNormallyOpen.Value, Mode=TwoWay, Converter={StaticResource valveFillChooser}}" 
                                  StrokeThickness="6.0" Stroke="#ff000000" StrokeStartLineCap="Round" StrokeEndLineCap="Round" StrokeLineJoin="Round" Data="F1 M 198.345,4.027 L 198.345,102.696 L 3.021,3.021 L 3.021,4.027 L 3.021,102.696 L 198.345,3.021 L 198.345,4.027 Z"/>
                        </Grid>
                    </Viewbox>
                </Grid>

                <Rectangle Fill="Transparent" Margin="13" Cursor="SizeAll" />
            </Grid>
        </go:SpotPanel>
    </DataTemplate>

And I’ve created the following class to notify the changes:


public class NotifyBool : INotifyPropertyChanged
    {
        private bool value;

        public NotifyBool(bool val)
        {
            value = val;
        }

        public bool Value
        {
            get { return this.value; }
            set
            {
                this.value = value;
                if (null != this.PropertyChanged)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs("Value"));
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
    }

But when I update the value of Data.IsNormallyOpen.Value (the fill on my path), the change is made on all of the nodes of the Valve category (even the one in the palette) instead of just on the selected node. Any insight as to why this might be happening?

Sounds like your instances of NotifyBool are being shared unexpectedly.