我有这些课程:
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);
}
并在页面I中绑定属性如下:
<ListBox Grid.Row="4" Grid.Column="1"
Margin="5,5,5,5"
ItemsSource="{Binding Path=Actors }"
x:Name="listStars"/>
一切正常(流派和其他)。其他一切都是字符串。但是对于演员我想要在列表名称中绑定,并在点击演员之后我想去网址。如何从actor绑定name属性?感谢
答案 0 :(得分:1)
首先,您需要在OnSelectedItemChanged
上创建ListBox
活动,以处理Actors
的点击次数。
然后你需要获得你点击的项目。您可以通过多种方式完成此操作。最简单的方法是listBox.SelectedItem
属性。
然后您可以使用(listBox.SelectedItem as Actor).Url
此外,当您从详细信息页面返回时,SelectedItem
将不为空,并在第二次单击同一项未触发事件。因此,在处理点击时将SelectedItem
设置为null
UPD :要将Actor
课程正确绑定到ListBox
,您需要创建ItemTemplate
:
<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>
答案 1 :(得分:0)
您可以覆盖Actor类中的ToString()
方法以显示友好的内容,例如名称。
public override string ToString()
{
return Name;
}
将对象绑定到组合框和下拉列表时,这很有用。