Silverlight 依赖属性Getter调用

Silverlight 依赖属性Getter调用,silverlight,binding,dependency-properties,bing,getter,Silverlight,Binding,Dependency Properties,Bing,Getter,我得到了Silverlight贴图控件,我想访问BoundingRectangle属性。但这不是一种依赖性财产。 所以我的想法是创建一个attaches属性,它绑定到ViewModel中的属性。每次调用此属性时,DepdencProperty Getter都应返回Map元素的BoundingRectangle属性。 但令人遗憾的是,Getter没有被称为 这是我的密码 public class MapHelper { public static readonly DependencyPr

我得到了Silverlight贴图控件,我想访问BoundingRectangle属性。但这不是一种依赖性财产。 所以我的想法是创建一个attaches属性,它绑定到ViewModel中的属性。每次调用此属性时,DepdencProperty Getter都应返回Map元素的BoundingRectangle属性。 但令人遗憾的是,Getter没有被称为

这是我的密码

public class MapHelper
{
    public static readonly DependencyProperty MapViewRectangleProperty =
        DependencyProperty.RegisterAttached(
            "MapViewRectangle",
            typeof(LocationRect),
            typeof(MapHelper),
            new PropertyMetadata(null, new PropertyChangedCallback(MapViewRectanglePropertyChanged))
        );

    private static void MapViewRectanglePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        string balls = "balls";
    }

    public static void SetMapViewRectangle(object element, LocationRect value)
    {
        string balls = "balls";
    }

    public static LocationRect GetMapViewRectangle(object element)
    {
        if (element is Map)
        {
            return (LocationRect)(((Map)element).TargetBoundingRectangle);
        }
        else
        {
            return null;
        }
    }
}
XAML:


我希望你能帮助我:)

好的,下次我会对自己说:D

将我的附加属性绑定到ViewModel中的我的属性

utils:MapHelper.MapViewRectangle="{Binding Path=BoundingRectangle,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
创建了一个行为:

public class MapBoundingRectangleBehavior : Behavior<Map>
{
    protected override void OnAttached()
    {
        AssociatedObject.TargetViewChanged += new EventHandler<MapEventArgs>(AssociatedObject_TargetViewChanged);
    }

    void AssociatedObject_TargetViewChanged(object sender, MapEventArgs e)
    {
        AssociatedObject.SetValue(MapHelper.MapViewRectangleProperty, AssociatedObject.TargetBoundingRectangle);
    }
}
公共类MapBoundingRectangleBehavior:Behavior { 受保护的覆盖无效附加() { AssociatedObject.TargetViewChanged+=新事件处理程序(AssociatedObject\u TargetViewChanged); } 无效关联对象\u TargetViewChanged(对象发送方,MapEventArgs e) { AssociatedObject.SetValue(MapHelper.MapViewRectangleProperty,AssociatedObject.TargetBoundingRectangle); } } 并将行为添加到贴图控件:

<i:Interaction.Behaviors>
            <behaviors:MapBoundingRectangleBehavior />
        </i:Interaction.Behaviors>

听起来很简单,但这是唯一的解决方案,总是给我正确的数据为边界矩形

我希望我能帮助任何有同样问题的人

问候 琼尼

public class MapBoundingRectangleBehavior : Behavior<Map>
{
    protected override void OnAttached()
    {
        AssociatedObject.TargetViewChanged += new EventHandler<MapEventArgs>(AssociatedObject_TargetViewChanged);
    }

    void AssociatedObject_TargetViewChanged(object sender, MapEventArgs e)
    {
        AssociatedObject.SetValue(MapHelper.MapViewRectangleProperty, AssociatedObject.TargetBoundingRectangle);
    }
}
<i:Interaction.Behaviors>
            <behaviors:MapBoundingRectangleBehavior />
        </i:Interaction.Behaviors>