所以我有这个课
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public string ID { get; set; }
}
我的窗口有一个名为“ lvUsers ”的ListView和一个名为“标签”的标签
<ListView Margin="10,10,237,10" Name="lvUsers" SelectionChanged="idk">
<ListView.View>
<GridView>
<GridViewColumn Header="Name" Width="200" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="Age" Width="Auto" DisplayMemberBinding="{Binding Age}" />
</GridView>
</ListView.View>
</ListView>
<Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="380,130,0,0" VerticalAlignment="Top"/>
然后我分配了这样的项目
public static List<User> users = new List<User>();
public MainWindow()
{
InitializeComponent();
users.Add(new User() { Name = "John", Age = 42, ID = "H42"});
users.Add(new User() { Name = "Jacob", Age = 39, ID = "H39"});
users.Add(new User() { Name = "Richard", Age = 28, ID = "H28"});
lvUsers.ItemsSource = users;
}
我的问题是:当我点击ListView中的某个项目时,项目的 ID 属性是否会显示在名为“标签”。
我的意思是,当我点击 John 和 42 的项目时,我希望标签说 H42
有办法吗?非常感谢你的时间。
答案 0 :(得分:2)
使用绑定会容易得多,但我可以看到你正在使用事件:
SelectionChanged="idk"
中的ListView
。
因此,在窗口后面的代码中必须有(或编译时错误)方法:
private void idk(object sender, SelectionChangedEventArgs e)
因此,您可以向idk
添加一些代码:
private void idk(object sender, SelectionChangedEventArgs e)
{
// your code
if (e.AddedItems.Count != 1)
{
return; // or sth else
}
var selectedUser = (User)e.AddedItems[0];
this.label.Text = selectedUser.ID;
}
答案 1 :(得分:1)
您可以使用整洁的绑定:
{Binding SelectedItem.ID, ElementName=lvUsers, StringFormat={}H{0}}
您也可以对此进行扩展以添加字符串格式。
{{1}}
答案 2 :(得分:1)
我只是处理SelectionChanged事件:
<ListView Margin="10,154,237,10" Name="lvUsers" SelectionChanged="lvUsers_SelectionChanged">
像这样:
private void lvUsers_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
User u = (User)lvUsers.SelectedItem;
this.label.Content = u.ID;
}