2011-01-16 2 views
0

Я борюсь с Наблюдаемыми коллекциями и использую их, чтобы добавить кнопки на карту Silverlight Bing. Я пытаюсь создать коллекцию здесь, используя Linq. Но им получать ошибку при каждом случае «PushPinItems» в моем коде, говоря:Наблюдаемые проблемы с сборкой

'observable_collection_test.Map.PushPinItems' is a 'field' but is used like a 'type' c:\users\dan\documents\visual studio 2010\Projects\observable collection test\observable collection test\Map.xaml.cs 26 38 observable collection test 

Не уверен, что происходит здесь, я объявляя/строительство это неправильно или что-то? Im new to Observable collection (и большая часть C#!), Поэтому любая помощь/совет приветствуются. Большое спасибо.

UPDATE:

Это, кажется, хорошо сейчас, выше вопрос, но теперь его не имеет обязательную силу мои деталей для защелки. Я посмотрел на «PushPins = pushPinCollection;» Способ и все 143 пунктов находятся там с латами, длинными и расположением propertiess с правильным Data- согласно этой точке останова:

alt text

Может быть, есть проблема с привязкой моего XAML?

Вот обновленный код:

namespace observable_collection_test 
{ 
public partial class Map : PhoneApplicationPage 
{ 

    private ObservableCollection<SItem2> _PushPins; 

    public event PropertyChangedEventHandler PropertyChanged; 

    public Map() 
    { 
     InitializeComponent(); 

     getItems(); 
    } 

    public ObservableCollection<SItem2> PushPins 
    { 
     get 
     { 
      return _PushPins; 
     } 


     private set 
     { 
      _PushPins = value; 
      if (PropertyChanged != null) 
      { 
       PropertyChanged(this, new PropertyChangedEventArgs("PushPins")); 
      } 


     } 
    } 
    private GeoCoordinate _location; 

    public GeoCoordinate Location 
    { 
     get { return _location; } 
     set 
     { 
      if (_location != value) 
      { 
       _location = value; 
           } 
     } 
    } 

    private string _pinSource; 

    public string PinSource 
    { 
     get { return _pinSource; } 
     set 
     { 
      if (_pinSource != value) 
      { 
       _pinSource = value; 
           } 
     } 
    } 

    public void getItems() 
    { 
     var document = XDocument.Load("ListSmall.xml"); 

     if (document.Root == null) 
      return; 

      var xmlns = XNamespace.Get("http://www.blahblah.co.uk/blah"); 

     var events = from ev in document.Descendants("item") 
      select new 
      { 
      Latitude = Convert.ToDouble(ev.Element(xmlns + "Point").Element(xmlns + "lat").Value), 
      Longitude = Convert.ToDouble(ev.Element(xmlns + "Point").Element(xmlns + "long").Value), 

     }; 

     ObservableCollection<SItem2> pushPinCollection = new ObservableCollection<SItem2>(); 

      foreach (var ev in events) 

         { 
          SItem2 PushPin = new SItem2 
       (     ev.Latitude, ev.Longitude) 
      { 

      }; 

      pushPinCollection.Add(PushPin); 

     } 
     PushPins = pushPinCollection; 


    } 

другой класс:

namespace observable_collection_test 
{ 

public class SItem2 
    { 
    //public DateTimeOffset Date { get; set; } 
    //public string Title 
    //{ get; set; } 
    public double Latitude 
    { get; set; } 
    public double Longitude 
    { get; set; } 
    public GeoCoordinate Location 
    { get; set; } 
    //public Uri Link { get; set; } 


    public SItem2(//string Title, 
     double Latitude, double Longitude) 
    { 
     //this.Date = Date; 
     //this.Title = Title; 
     this.Latitude = Latitude; 
     this.Longitude = Longitude; 
     //this.Location = Location; 
     //this.Link = Link; 
    } 
} 

Бит XAML относительно добавления булавками к карте:

 <my:Map ZoomBarVisibility="Visible" ZoomLevel="10" CredentialsProvider="AhqTWqHxryix_GnWER5WYH44tFuutXNEPvFm5H_CvsZHQ_U7-drCdRDvcWSNz6aT" Height="508" HorizontalAlignment="Left" Margin="0,22,0,0" Name="map1" VerticalAlignment="Top" Width="456"> 
             <my:MapItemsControl ItemsSource="{Binding PushPins}" > 
       <my:MapItemsControl.ItemTemplate> 
        <DataTemplate> 
         <my:Pushpin Background="Aqua" Location="{Binding Location}" ManipulationCompleted="pin_click"> 
         </my:Pushpin> 
        </DataTemplate> 
       </my:MapItemsControl.ItemTemplate> 
      </my:MapItemsControl> 

     </my:Map> 

Было бы также хорошо знать если я приближаюсь к привязной привязке к картам правильно.

+0

обновлен, чтобы показать новую проблему. Я думаю, начальная проблема. –

ответ

1

Похоже, что это связано с тем, что вы использовали x:Name="PushPinItems" в своем XAML, который является тем же именем, что и один из ваших типов, поэтому, когда вы думаете, что ссылаетесь на свой тип PushPinItems в своем коде, вы на самом деле ссылаетесь на поле, которое VS создал для вас ваш XAML, который представляет этот экземпляр Pushpin. Вы можете использовать другой x:Name в своем XAML.

Update

Хорошо, я вижу этот вопрос :) Я не работал с контролем Bing Maps раньше, но, глядя на http://forums.silverlight.net/forums/t/197631.aspx (второй пост вниз), вам необходимо установить карту управления MapItemsControl недвижимость , Свойство ItemsSource здесь должно быть привязано к вашему ObservableCollection настраиваемого типа, который содержит такие свойства, как Name и Location. Затем вы можете заполнить эту коллекцию экземплярами этого настраиваемого типа (в сообщении они использовали MapData как имя типа).

Вы также можете получить больше примеров и исходный код на http://www.microsoft.com/maps/isdk/silverlight/

+0

Спасибо за предложение. Когда я изменяю x: имя в XAML, ошибка до сих пор изменяется на: Тип или имя пространства имен 'PushPinItems' не может быть найден (вам не хватает директивы using или ссылки на сборку?) \t c: \ users \ dan \ documents \ visual studio 2010 \ Projects \ наблюдаемый сборный тест \ наблюдаемый сборный тест \ Map.xaml.cs Наблюдаемый сборник –

+1

Хорошо, что ваш код ссылался на поле с автогенерированием, а не на тип PushPinItems. Где ваш тип определен?Это в другом пространстве имен? – devdigital

+0

Это все помощник по коду. hmmm, должен ли я определять элементы в colelction с помощью get/set accessors где-нибудь? –

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