WPF Listview获取行值
我有如下XAML文件:WPF Listview获取行值,wpf,listview,Wpf,Listview,我有如下XAML文件: <Window x:Class="ComboBoxCheck.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:check="clr-namespace:ComboBoxCheck" Title="Window1" Height="300" Wid
<Window x:Class="ComboBoxCheck.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:check="clr-namespace:ComboBoxCheck"
Title="Window1" Height="300" Width="320">
<Window.Resources>
<ObjectDataProvider x:Name="Designation" MethodName="GetDesignations" ObjectType="{x:Type check:Window1}" x:Key="Designation" IsAsynchronous="True"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="lsvStaffList" Margin="0,0,0,3"
BorderBrush="Transparent" BorderThickness="0">
<ListView.View>
<GridView>
<GridViewColumn Header="Employee Id" Width="70" DisplayMemberBinding="{Binding Path=EmployeeId}"/>
<GridViewColumn Header="Employee Name" Width="90" DisplayMemberBinding="{Binding Path=EmployeeName}"/>
<GridViewColumn Header="Designation" Width="120">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="cmbDesignation" Height="20" Width="90" SelectedValue="{Binding Path=EmployeeDesignation}"
ItemsSource="{Binding Source={StaticResource Designation}}"
DisplayMemberPath="Name" SelectedValuePath="Id"
VerticalAlignment="Top" HorizontalAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Button Name="btnProperty" Width="75" Content="Get Value" Height="25" Click="btnProperty_Click" Grid.Row="1"/>
</Grid>
代码隐藏文件如下所示:
<Window x:Class="ComboBoxCheck.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:check="clr-namespace:ComboBoxCheck"
Title="Window1" Height="300" Width="320">
<Window.Resources>
<ObjectDataProvider x:Name="Designation" MethodName="GetDesignations" ObjectType="{x:Type check:Window1}" x:Key="Designation" IsAsynchronous="True"/>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="lsvStaffList" Margin="0,0,0,3"
BorderBrush="Transparent" BorderThickness="0">
<ListView.View>
<GridView>
<GridViewColumn Header="Employee Id" Width="70" DisplayMemberBinding="{Binding Path=EmployeeId}"/>
<GridViewColumn Header="Employee Name" Width="90" DisplayMemberBinding="{Binding Path=EmployeeName}"/>
<GridViewColumn Header="Designation" Width="120">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="cmbDesignation" Height="20" Width="90" SelectedValue="{Binding Path=EmployeeDesignation}"
ItemsSource="{Binding Source={StaticResource Designation}}"
DisplayMemberPath="Name" SelectedValuePath="Id"
VerticalAlignment="Top" HorizontalAlignment="Stretch"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<Button Name="btnProperty" Width="75" Content="Get Value" Height="25" Click="btnProperty_Click" Grid.Row="1"/>
</Grid>
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Data;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用System.Windows.Navigation;
使用System.Windows.Shapes
名称空间组合框检查
{
公共部分类窗口1:窗口
{
公共静态名称名称=空;
公共雇员=空;
公共窗口1()
{
初始化组件();
名称=新名称();
雇员=新雇员();
名称d1=新名称();
d1.Id=1;
d1.Name=“经理”;
名称。添加(d1);
名称d2=新名称();
d2.Id=2;
d2.Name=“开发商”;
名称。添加(d2);
名称d3=新名称();
d3.Id=3;
d3.Name=“铅”;
名称。添加(d3);
员工e1=新员工();
e1.EmployeeId=1;
e1.EmployeeName=“名称1”;
e1.EmployeeDesignation=2;
增加(e1);
员工e2=新员工();
e2.EmployeeId=2;
e2.EmployeeName=“名称2”;
e2.EmployeeDesignation=2;
增加(e2);
员工e3=新员工();
e3.EmployeeId=3;
e3.EmployeeName=“Name3”;
e3.EmployeeDesignation=1;
添加(e3);
lsvStaffList.ItemsSource=员工;
}
公共静态指定GetDesignations()
{
返回指定;
}
私有无效btnProperty\u单击(对象发送方,路由目标)
{
//我需要这样的东西
//employeesCollection=新员工();
//employeesCollection[0]。EmployeeId=1
//employeesCollection[0]。EmployeeName=Name1
//employeesCollection[0]。EmployeeDesignation=Developer
//employeesCollection[1]。EmployeeId=2
//employeesCollection[1]。EmployeeName=Name2
//employeesCollection[1]。EmployeeDesignation=Developer
//employeesCollection[2]。EmployeeId=3
//employeesCollection[2]。EmployeeName=Name3
//employeesCollection[2]。EmployeeDesignation=Manager
}
}
公共类名称:列表{}
公共班级名称
{
私有int-id;
公共整数Id
{
获取{return id;}
设置{id=value;}
}
私有字符串名称;
公共字符串名
{
获取{返回名称;}
设置{name=value;}
}
}
公共类员工:列表{}
公营雇员
{
私人国际雇员ID;
公共国际雇员ID
{
获取{return employeeid;}
设置{employeeid=value;}
}
私有字符串employeename;
公共字符串EmployeeName
{
获取{return employeename;}
设置{employeename=value;}
}
私人国际雇员签名;
公共内部员工签名
{
获取{return employeedesignation;}
设置{employeedesignation=value;}
}
}
}
我想获取包含员工姓名、员工id和员工名称的员工集合。我需要在“获取值”按钮的单击事件中输入一个代码,并给出格式。您的绑定工作正常。只需按如下方式获取ListView的Items集合:
private void btnProperty_Click(object sender, RoutedEventArgs e)
{
IEnumerable items = this.lsvStaffList.Items;
foreach (Employee employee in items)
{
Console.WriteLine(employee.EmployeeId.ToString()
+ "," + employee.EmployeeName.ToString()
+ "," + employee.EmployeeDesignation.ToString());
}
}
private void btnProperty_Click(object sender, RoutedEventArgs e)
{
IEnumerable items = this.lsvStaffList.Items;
foreach (Employee employee in items)
{
Designation d = designations.First(p => p.Id == employee.EmployeeDesignation);
Console.WriteLine(employee.EmployeeId.ToString()
+ "," + employee.EmployeeName.ToString()
+ "," + d.Name);
}
}
但是,此处的EmployeeDesignation是一个int。如果要获取实际的EmployeeDesignation实例,可以手动“查询”它,如下所示:
private void btnProperty_Click(object sender, RoutedEventArgs e)
{
IEnumerable items = this.lsvStaffList.Items;
foreach (Employee employee in items)
{
Console.WriteLine(employee.EmployeeId.ToString()
+ "," + employee.EmployeeName.ToString()
+ "," + employee.EmployeeDesignation.ToString());
}
}
private void btnProperty_Click(object sender, RoutedEventArgs e)
{
IEnumerable items = this.lsvStaffList.Items;
foreach (Employee employee in items)
{
Designation d = designations.First(p => p.Id == employee.EmployeeDesignation);
Console.WriteLine(employee.EmployeeId.ToString()
+ "," + employee.EmployeeName.ToString()
+ "," + d.Name);
}
}
那太好了。这个解决方案非常有效!这就是我要找的。谢谢你,克鲁米先生!!