2013-03-22 2 views
2

Я программно добавляю элементы в свой Panorama Control под названием PanoramaCC.Как получить имя элемента Panorama во время выполнения?

//function to create the panorama items in our view 
private void showPanorama(string panoramaName) 
{ 
    //create the panorama item and define it 
    PanoramaItem genItem = new PanoramaItem(); 
    genItem.Height = 265; 
    genItem.Width = 440; 
    genItem.Tap += new EventHandler<System.Windows.Input.GestureEventArgs>(PanoramaItem_Tap); 
    genItem.Name = panoramaName; 

    //create the stackpanel for the panoramaitem 
    StackPanel genStack = new StackPanel(); 
    genStack.Orientation = System.Windows.Controls.Orientation.Horizontal; 
    //margin to be done 
    genStack.Margin = new Thickness(0, -20, 0, 20); 

    //load the image 
    Image genImg = new Image(); 
    genImg.Height = 220; 
    genImg.Width = 400; 
    genImg.Stretch = System.Windows.Media.Stretch.Fill; 
    genImg.Margin = new Thickness(20, 5, 20, 5); 

    string path = "Assets/AppGraphics/CreditCards/" + panoramaName.ToString() + "Front.png"; 
    Uri uriR = new Uri(path, UriKind.Relative); 
    BitmapImage imgSource = new BitmapImage(uriR); 
    genImg.Source = imgSource; 

    //add image into stackpanel 
    genStack.Children.Add(genImg); 
    //add stackpanel to the panoramaitem 
    genItem.Content = genStack; 
    //add the panoramaitem to the panoramaview 
    this.PanoramaCC.Items.Add(genItem); 
} 

Проблема у меня в том, что во время выполнения Я хочу, чтобы получить имя panoramaItem я в настоящее время, глядя на и сделать что-то с ним. Мне удалось получить имя через событие перехода для целей навигации, string name = ((PanoramaItem)sender).Name;, но это разный сценарий. Я хочу получить имя, а затем удалить элемент с соответствующим именем. Нажатие кнопки должно удалить выбранный panoramaItem, чего я пытаюсь достичь.

ответ

4

Вы можете получить текущий PanoramaItem, используя SelectedItem. Вам не нужно получать имя, чтобы удалить его.

PanoramaItem currentItem = myPanorama.SelectedItem as PanoramaItem; 
if(currentItem != null) 
{ 
    //if you want the name for other reasons 
    string name = currentItem.Name; 

    //Items returns an ItemsCollection object 
    myPanorama.Items.Remove(currentItem);  
} 
+0

derp im facepalming hard прямо сейчас. я увидел выбранный элемент для панорамы, но мой мозг не узнал его. Спасибо –

+0

Любая идея, как я получаю PanoramaItem, когда SelectedItem является модельным классом? Я просто использую привязку ItemTemplate и данных, поэтому мой список объектов модели показан как объект PanoramaItem, что означает, что SelectedItem, а также элементы ссылаются только на мой класс (ы) модели. Значение вышеуказанного кода всегда приводит к тому, что currentItem является нулевым. – WarrenFaith

+0

Я не пробовал извлекать SelectedItem из пункта панорамы, но [это поведение] (http://geoffwebbercross.blogspot.co.uk/2011/12/wp7-mvvm-panorama-selectedindex-binding.html) может помочь как а также [это обходное решение] (http://stackoverflow.com/questions/14260701/windows-phone-8-panorama-selectionchanged-databinding). – keyboardP

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