我在XAML中创建了ListView
,但我不知道如何获取所选行的数据。任何人都可以帮助我吗?
这是我的XAML:
<ListView x:Name="myListView" Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn Header="Test1" DisplayMemberBinding="{Binding test1}" Width="400" />
<GridViewColumn Header="Test2" DisplayMemberBinding="{Binding test2}" Width="120"/>
<GridViewColumn Header="Test3" DisplayMemberBinding="{Binding test3}" Width="100"/>
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:1)
您需要执行以下操作
1设置数据结构:您可以在后面或XAML中的代码中执行此操作。数据必须是一个集合类型,其类型集合包含test1 / test2 / test3数据成员。
var data = new ObservableCollection<Test>();
data.Add(new Test {test1="abc", test2="abc2", test3="abc3"});
data.Add(new Test {test1="bc", test2="bc2", test3="bc3"});
data.Add(new Test {test1="c", test2="c2", test3="c3"});
Data = data
public ObservableCollection<Test> Data {get;set;}
通过属性公开数据
2您需要将集合(步骤1中的设置)分配给ListView的DataContext。 (最好是在XAML中,但可以在代码隐藏中完成)
<ListView x:Name="myListView" DataContext={Binding Data} Margin="10,71,10,45" SelectionChanged="Selector_OnSelectionChanged" >
3您还需要将View Model类(包含Data
)与视图
<Application
x:Class="BuildAssistantUI.App"
xmlns:local="clr-namespace:MainViewModel"
StartupUri="MainWindow.xaml"
>
<Application.Resources>
<local:MainViewModel x:Key="MainViewModel" />
</Application.Resources>
<Window DataContext="{StaticResource MainViewModel}" >
完成上述步骤后,您应该会在ListView
。
关于如何从具有匿名类型的对象访问属性,这是通过Reflection。
完成的以下是一个例子
object item = new {test1="test1a", test2="test2a", test3="test3a"};
var propertyInfo = item.GetType().GetProperty("test1"); // propertyInfo for test1
var test1Value = propertyInfo.GetValue(item, null);