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;