2012-10-15 4 views
0

У меня есть элемент управления Silverlight Map, и я хочу получить доступ к свойству BoundingRectangle. Но это не зависимость. Так что мне пришлось создавать атташе собственности, которая связана с собственностью в моей модели ViewModel. И каждый раз, когда это свойство называется DepdendencyProperty, Getter должен вернуть свойство BoundingRectangle элемента карты. Но, к сожалению геттер не называется ...Зависимость собственности Getter Call

Heres мой код

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; 
    } 

Я надеюсь, что вы можете мне помочь)

ответ

1

Хорошо, в другой раз я Anwer себе: D

Bound моего вложенного свойства моей собственности в 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> 

Звучит так просто, но это единственное решение, которое всегда помогало мне rrent-данные для BoundingRectangle!

Надеюсь, я могу помочь любому, у кого есть та же проблема.

Приветствия Jonny

Смежные вопросы