0

Silverlightマップコントロールを取得しましたが、BoundingRectangleプロパティにアクセスしたいと思います。しかし、それは依存関係のプロパティではありません。したがって、私の考えは、ViewModelのプロパティにバインドされるattachsプロパティを作成することでした。そして、このプロパティが呼び出されるたびに、DepdendencyProperty Getterは、マップ要素のBoundingRectangleプロパティを返す必要があります。しかし悲しいことに、ゲッターは呼ばれていません...

これが私のコードです

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:

<m:Map utils:MapHelper.MapViewRectangle="{Binding Path=BoundingRectangle}" />

ViewModel:

public LocationRect BoundingRectangle
    {
        get;
        set;
    }

私はあなたが私を助けることができることを願っています:)

4

1 に答える 1

1

わかりました、別の時に私は自分自身に答えます: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);
    }
}

そして、マップコントロールに動作を追加しました:

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

とても簡単に聞こえますが、それがBoundingRectangleの現在のデータを常に提供してくれた唯一のソリューションです!

同じ問題を抱えている人を助けられるといいのですが。

ジョニーご挨拶

于 2012-10-15T14:41:03.573 に答える