如何在文本块中显示列表框选定项
Posted
技术标签:
【中文标题】如何在文本块中显示列表框选定项【英文标题】:How to display listbox selected item in a textblock 【发布时间】:2018-01-06 15:41:01 【问题描述】:我有一个列表框,其中使用绑定填充数据,我想将所选列表项中的姓名和年龄显示到下一页中的文本块中。
XAML:
<ListBox x:Name="listBoxobj" Background="Transparent" Height="388" Margin="22,0,0,0" SelectionChanged="listBoxobj_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<!--<Border BorderBrush="DarkGreen" BorderThickness="4">-->
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock x:Name="txtName1"
Text="Binding Name"
Grid.Row="0"
Width="400"
Height="40"
Foreground="White"
FontSize="20"
Margin="8,0,-48,0"/>
<TextBlock x:Name="Age1"
Text="Binding Age"
Grid.Row="1"
Width="400"
Height="40"
Foreground="White"
FontSize="18"
Margin="8,0,-48,0"/>
</Grid>
<!--</Border>-->
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我试过这样做,
private void listBoxobj_SelectionChanged(object sender, SelectionChangedEventArgs e)
object person = listBoxobj.SelectedItem;
Frame.Navigate(typeof(Page2), person);
但我不明白如何从 NavigationEventArgs e 获取值以在一个 textBlock 中显示 Name 并在另一个 textBlock 中显示 Age。 数据正在通过这个绑定..
ObservableCollection<MyData> Details = new ObservableCollection<MyData>();
Details.Add(new MyData() LineOne = "Teena", LineTwo = "20" );
Details.Add(new MyData() LineOne = "Riya", LineTwo = "21" );
Details.Add(new MyData() LineOne = "Priya", LineTwo = "22" );
Details.Add(new MyData() LineOne = "kila", LineTwo = "23" );
this.listBoxobj.ItemsSource = Details;
【问题讨论】:
触发所选项目更改事件并使用参数更新文本块文本。 Rachel,你是否将 ListBox 与某些数据源绑定?对我来说(根据您给定的代码),列表框是空的。我说的对吗? 是的,listbox中的数据是通过数据绑定显示出来的。 您能否在上述代码中也提供数据绑定代码?谢谢 更新了问题。 【参考方案1】:我找到了答案,
private void listBoxobj_SelectionChanged(object sender, SelectionChangedEventArgs e)
MyData list_item = listBoxobj.SelectedItem as MyData;
Frame.Navigate(typeof(Page2), list_item);
在下一页中,以这种方式导出参数
protected override void OnNavigatedTo(NavigationEventArgs e)
textBlock1.Text = ((Appbar_Sample.MyData)e.Parameter).LineOne;
textBlock2.Text = ((Appbar_Sample.MyData)e.Parameter).LineTwo;
【讨论】:
以上是关于如何在文本块中显示列表框选定项的主要内容,如果未能解决你的问题,请参考以下文章