2011-12-21 138 views
0

列表框我有這些類:綁定自定義類從自定義類

public class MovieExt 
{ 
     public string Title { get; set; } 
     public string Year { get; set; } 
     public List<string> Genres { get; set; } 
     public List<Actor> Actors { get; set; } 
     .... 
} 

public class Actor 
{ 
    public string Name { get; set; } 
    public string Birth { get; set; } 
    public string Biography { get; set; } 
    public string Url { get; set; } 

} 

,這是我在我的頁面的方法:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 

    object obj; 
    if (PhoneApplicationService.Current.State.TryGetValue("movie", out obj)) 
    { 
     MovieExt movie = (MovieExt)obj; 
     this.DataContext = movie; 
     this.imgPoster.Source = new BitmapImage(new Uri(movie.PosterUrl, UriKind.Absolute)); 
    } 
    base.OnNavigatedTo(e); 
} 

,並在頁面我綁定的屬性是這樣的:

<ListBox Grid.Row="4" Grid.Column="1" 
          Margin="5,5,5,5" 
          ItemsSource="{Binding Path=Actors }" 
          x:Name="listStars"/> 

對於它的所有工作(類型和其他)。其他一切都是字符串。但是對於我想要在列表名稱中綁定的演員,並且在點擊演員之後,我想要轉到url。我怎樣才能綁定來自actor的名稱屬性?謝謝

回答

1

首先,您需要在您的ListBox上創建OnSelectedItemChanged事件來處理您的Actors的點擊。

然後你需要得到你點擊的項目。你可以用幾種方法來做到這一點。最簡單的方法是listBox.SelectedItem屬性。

然後你可以用(listBox.SelectedItem as Actor).Url

而且,當你去從細節頁面返回,SelectedItem將不爲空,然後單擊同一項目中第二次不觸發事件得到您的網址。因此,設置SelectedItem當點擊的處理

UPD爲null:正確綁定Actor類,你需要創建ItemTemplateListBox

<ListBox ...> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel> 
        <TextBlock Text={Binding Name} /> 
        <TextBlock Text={Binding Birth} /> 
        <TextBlock Text={Binding Biography} /> 
        <TextBlock Text={Binding Url} /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
</ListBox> 
+0

這是爲處理咔嗒聲,它是偉大的,thansk爲此。但這不是我的問題。我想從列表框中的演員類顯示名稱屬性,但現在我有「namespace.Actor」。 – 2011-12-21 19:53:05

+0

我更新了答案。如果它解決了您的問題,請將其標記爲答案。 – Ku6opr 2011-12-22 08:03:40

0

您可以覆蓋在演員類的ToString()方法來顯示一些友善的東西,如名字。

public override string ToString() 
    { 
     return Name; 
    } 

當將對象綁定到組合框和下拉列表時,這非常有用。

+0

這是爲什麼被低估?謹慎闡述? – 2011-12-22 00:13:07

+0

這不是我的,我認爲你的答案很聰明,但我想我會使用itemtemplate。 – 2011-12-22 08:11:03

+0

我會使用ItemTemplate以及它更通用,但是很多時候我發現自己只需要改變項目文本的顯示方式,重寫ToString就是在這些情況下去的方式,這就是我爲什麼要這麼做的原因。 – 2011-12-22 13:49:30