将SelectedItem强制转换为对象C#Windows Phone

将SelectedItem强制转换为对象C#Windows Phone,c#,xaml,casting,windows-phone,C#,Xaml,Casting,Windows Phone,我有一个图像列表和它们各自的链接。我页面上加载的所有内容都正常工作,但需要获取存储库中的页面链接“标记”列表框中的每个文本块。请参阅下面的代码以更好地理解 <TextBlock Tag="{Binding Path=Url}" HorizontalAlignment="Center" Text="{Binding Path=Titulo}" FontSize="20" Foreground="#FF159DDE" TextWrapping="Wrap" /> //Works Fine

我有一个图像列表和它们各自的链接。我页面上加载的所有内容都正常工作,但需要获取存储库中的页面链接“标记”列表框中的每个文本块。请参阅下面的代码以更好地理解

<TextBlock Tag="{Binding Path=Url}" HorizontalAlignment="Center" Text="{Binding Path=Titulo}" FontSize="20" Foreground="#FF159DDE" TextWrapping="Wrap" /> //Works Fine

SelectedItem
不是
TextBlock
类型,而是列表的
ItemsSource
中的项目类型,这是保存
Url
Titulo
属性的类型

private void listBoxPopular_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    int aux = 0;
    var app = (Application.Current as App);

    var selectedViewModel = listBoxPopular.SelectedItem as PopularVideos; 

    if (selectedViewModel != null)
          app.URI = selectedViewModel.Url ?? String.Empty;     

    ApplicationBarra(aux);
    ApplicationBar.Mode = ApplicationBarMode.Default;
}

我建议在使用前检查
SelectedItem
是否为空。您可以使用EventArgs而不是
listBoxPopular
,并将方法设置为静态。不过,基本上是风格问题。

listBoxPopular.SelectedItem返回的实际类型是什么?e、 g.listBoxPopular.SelectedItem.GetType()@codemonkeh我是初学者,不知道如何正确回答您的问题。很抱歉我认为它可以工作,但是我在XYViewModel中有一个错误,这个类不存在。我设法解决了这个问题,需要将该类XYViewModel更改为与listbox一起工作的类,在我的例子中是PopularVideos。我做了这个改变,效果非常好。非常感谢。编辑你的帖子,为下一个人留下,一切正常!var selectedViewModel=listBoxPopular.SelectedItem作为PopularVideos;
private void listBoxPopular_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    int aux = 0;
    var app = (Application.Current as App);

    var selectedViewModel = listBoxPopular.SelectedItem as PopularVideos; 

    if (selectedViewModel != null)
          app.URI = selectedViewModel.Url ?? String.Empty;     

    ApplicationBarra(aux);
    ApplicationBar.Mode = ApplicationBarMode.Default;
}