यहाँ के pushpins के एक संग्रह को जोड़ने XAML कोड है। ट्रेक्स एक ObservableCollection<PushPinModel>
है। मैं इस कोड को चलाता हूं और केवल उपयोगकर्ता स्थान मार्कर प्रदर्शित होता है, जो मेरा वर्तमान स्थान है।MVVM Windows Phone 8 मानचित्र
6
A
उत्तर
16
मैं अंततः निर्भरता संपत्ति का उपयोग करके इसे काम करता हूं। मैं एक नया वर्ग कहा:
public static class MapPushPinDependency
{
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.RegisterAttached(
"ItemsSource", typeof(IEnumerable), typeof(MapPushPinDependency),
new PropertyMetadata(OnPushPinPropertyChanged));
private static void OnPushPinPropertyChanged(DependencyObject d,
DependencyPropertyChangedEventArgs e)
{
UIElement uie = (UIElement)d;
var pushpin = MapExtensions.GetChildren((Map)uie).OfType<MapItemsControl>().FirstOrDefault();
pushpin.ItemsSource = (IEnumerable)e.NewValue;
}
#region Getters and Setters
public static IEnumerable GetItemsSource(DependencyObject obj)
{
return (IEnumerable)obj.GetValue(ItemsSourceProperty);
}
public static void SetItemsSource(DependencyObject obj, IEnumerable value)
{
obj.SetValue(ItemsSourceProperty, value);
}
#endregion
}
और .xaml फ़ाइल में मैं
xmlns:dp="clr-namespace:Treks.App.Util.DependencyProperties"
जोड़ लिया है और अब .xaml फ़ाइल इस तरह दिखता है:
<maps:Map x:Name="NearbyMap"
Center="{Binding MapCenter, Mode=TwoWay}"
ZoomLevel="{Binding ZoomLevel, Mode=TwoWay}"
dp:MapPushPinDependency.ItemsSource="{Binding Path=Treks}"
>
<maptk:MapExtensions.Children>
<maptk:MapItemsControl Name="StoresMapItemsControl">
<maptk:MapItemsControl.ItemTemplate>
<DataTemplate>
<maptk:Pushpin x:Name="PushPins" GeoCoordinate="{Binding Location}" Visibility="Visible" Content="test"/>
</DataTemplate>
</maptk:MapItemsControl.ItemTemplate>
</maptk:MapItemsControl>
<maptk:UserLocationMarker x:Name="UserLocationMarker" Visibility="Visible" GeoCoordinate="{Binding MyLocation}"/>
</maptk:MapExtensions.Children>
</maps:Map>
अब सभी pushpins सही ढंग से प्रस्तुत किया जाता है।
3
MapItemsControl
वर्तमान में अभी तक एमवीवीएम बाइंडबल नहीं है (जो मुझे पता है)। तो सबसे अच्छा तरीका है अपने दृश्य के पीछे कोड में ItemsSource
सेट करना।
हालांकि आप अभी भी अपने ViewModel में परिभाषित संग्रह का उपयोग कर सकते हैं! विकल्प ये हैं: this.StoresMapItemsControl.ItemsSource = ServiceLocator.Current.GetInstance<MainViewModel>().Locations;
:
- MVVM संदेश के माध्यम से दृश्य
- संग्रह, कुछ इस तरह का उपयोग करने के दृश्य के DataContext का उपयोग के पीछे कोड के लिए viewmodel से संग्रह साथ भेज देते हैं
संबंधित मुद्दे
- 1. त्रुटियाँ Windows Phone 8 परियोजना
- 2. Windows Phone 8 (सी #) फ्रेमवर्क
- 3. Windows Phone 8 स्क्रॉल सामग्री
- 4. Windows Phone 8 विजुअल स्टूडियो 2013 व्यावसायिक
- 5. कंसोल विंडो सुविधा Windows Phone 8 एम्युलेटर पर
- 6. रोकें Windows Phone पर स्वचालित स्क्रीन लॉक 8
- 7. Windows Phone 8 - Geolocator PositionChanged श्रोता कुछ समय
- 8. Windows 8 और Windows Phone पर एचटीएमएल 5/जावास्क्रिप्ट के साथ एक एफ # पोर्टेबल लाइब्रेरी का उपयोग करना 8
- 9. मैं WinRT/Windows 8
- 10. Windows 8
- 11. Windows 8/Windows Server 2012
- 12. विजुअल स्टूडियो 2012 में Windows Phone 8 परियोजना नहीं बनाई जा सकती अंतिम
- 13. Windows Phone 7 SDK और विजुअल स्टूडियो 2010 RTM
- 14. मैं Windows 8
- 15. Windows 8 (WinRT) लॉक स्क्रीन
- 16. Visual Studio 2012 Windows 8
- 17. MVVM
- 18. MVVM
- 19. mvvm
- 20. MVVM
- 21. जावा 8 हैश मानचित्र
- 22. Windows 8 मेट्रो क्षुधा (सी #/XAML)
- 23. Windows 8 अनुप्रयोग - स्थानीय संग्रह सुरक्षा
- 24. Windows 8 VS2012 IISExpress विंडोज प्रमाणीकरण
- 25. Windows 8 स्टोर ऐप्स चिकनी अभिविन्यास बदलें
- 26. Windows 8 में स्वाइप Guesture हैंडलिंग ग्रिड
- 27. जावा 8: मानचित्र लैम्ब्डा अभिव्यक्ति
- 28. WPF MVVM
- 29. MVVM विरासत
- 30. WPF/MVVM
इसने मेरा मुद्दा हल किया, उत्कृष्ट दृष्टिकोण – xximjasonxx
धन्यवाद मेरी समस्या को हल किया गया है – robertk
क्या आप पेज.xaml.cs के लिए भी कोड प्रदान कर सकते हैं - मुझे नहीं पता कि मैं मानचित्र वस्तुओं की वास्तविक सूची कैसे बांध सकता हूं (यानी 'ट्रैक ') 'मानचित्र' या 'MapItemsControl' –