本次笔记涉及:ListBox、TextBox、Button、绑定、ItemSource、ObservableCollection、ICollectionView。
实现目标:ListBox显示一组数据,数据是User对象的Name属性;同时把ListBox选中项的Name属性显示在nameTextBox,把Age属性显示在ageTextBox;最后4个按钮,能选择第一个、前一个、后一个、最后一个ListBox中的项目。
界面如下:
实现方法:
方法一:因为是静态数据,所以直接在XAML中列出,然后采用绑定的方式。
XAML前台代码
<Window x:Class="KarliCards.Gui.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:KarliCards.Gui"
mc:Ignorable="d"
Title="MainWindow" Height="228" Width="283">
<Window.Resources>
<local:Users x:Key="UserSet">
<local:User Name="赵子龙" Age="120"/>
<local:User Name="谢浩然" Age="10"/>
<local:User Name="林黛玉" Age="20"/>
<local:User Name="花木兰" Age="90"/>
<local:User Name="诸葛亮" Age="120"/>
<local:User Name="穆桂英" Age="90"/>
<local:User Name="贾宝玉" Age="20"/>
<local:User Name="李宛桐" Age="10"/>
</local:Users>
</Window.Resources>
<Grid Name="grid" Height="195" DataContext="{StaticResource UserSet}">
<TextBlock Height="23" Width="43" Text="Name: " HorizontalAlignment="Left" VerticalAlignment="Top"
Margin="6, 71, 0, 0"/>
<TextBlock Height="23" Width="43" Text="Age: " HorizontalAlignment="Left" VerticalAlignment="Bottom"
Margin="6, 0, 0, 72"/>
<TextBox Height="23" Width="120" Name="nameTextBox" HorizontalAlignment="Left"
VerticalAlignment="Top" Margin="129, 68, 0, 0"
Text="{Binding Path=Name}"/>
<!--Binding没有写ElementName对象,默认就是数据上下文DataContext-->
<TextBox Height="23" Width="120" Name="ageTextBox" HorizontalAlignment="Left"
VerticalAlignment="Top" Margin="129, 100, 0, 0"
Text="{Binding Path=Age}"/>
<TextBlock Height="23" Width="58" Name="textBlock3"