wpf访问lisbox所选项目(如果它不是';t字串

wpf访问lisbox所选项目(如果它不是';t字串,wpf,wpf-controls,binding,observablecollection,Wpf,Wpf Controls,Binding,Observablecollection,我有一个列表框,它显示电影对象数组中的名称属性 <ListBox Name="listBox1" SelectionChanged="listBox1_SelectionChanged"> <ItemsControl ItemsSource="{Binding}" > <ItemsControl.ItemTemplate >

我有一个列表框,它显示
电影
对象数组中的
名称
属性

<ListBox Name="listBox1" SelectionChanged="listBox1_SelectionChanged">
                     <ItemsControl ItemsSource="{Binding}" >
                          <ItemsControl.ItemTemplate >
                              <DataTemplate >                                      
                                     <TextBlock Name="textBlock1" Text="{Binding Name}"/> 
                              </DataTemplate>
                          </ItemsControl.ItemTemplate>
                     </ItemsControl>
                 </ListBox>

如何在代码中访问列表框内的文本块文本?

我必须在我的代码中使用Name属性的值

列表框报告的选定项将向您公开拥有TextBlock中绑定的Name属性的对象。至此,游戏结束。

当您执行上述操作时,itemscontrol中的每个textblock都有一个名称textblock1,其作用域也仅限于每个item容器

如果您想单独使用这些文本块,我通常会执行以下操作:

<TextBlock Text="{Binding Name}" Loaded="TextBlock_Loaded"/>

我尝试了
Dim testb As TextBlock=CType(listBox1.SelectedItem,TextBlock)
,但它不会从ItemsControl强制转换为TextBlockNo。什么对象公开了您在文本绑定上使用的“Name”属性?SelectedItem属性提供该对象。忘记文本块吧!我尝试将tempMv设置为Movie=CType(listBox1.SelectedItem,Movie)但它给出了相同的错误。我有
Me.listBox1.DataContext=Me.movieArray
movieArray=newobservedcollection(of Movie)
如果您通过代码设置DataContext,那么在xaml中剪切ItemsSource上的{Binding}:不要同时使用这两个选项。第一:你看到名单上的名字了吗?第二:在SelectionChanged事件处理程序中,SelectedItem公开的对象是什么?如果删除Itemssource绑定,它不会显示任何内容,对象类型是System.Windows.Controls.ItemsControl
List<TextBlock> TextBlockList = new List<TextBlock>();

private void TextBlock_Loaded(object sender, RoutedEventArgs e)
        {
            TextBlockList.Add((TextBlock)sender);           
        }
String FirstItem = TextBlockList.ElementAt(0).Text;