从listview获取用户输入

时间:2015-07-30 08:19:11

标签: wpf

我创建了一个列表视图。我需要从列表视图中的文本框中获取用户的输入。当用户单击提交按钮时,列表视图中的用户输入将显示在MessageBox中。如何从listview中的文本框中获取用户输入

<ListView x:Name="lstvQualification"
            Height="96"
            Margin="10,6,14,0"
            VerticalAlignment="Top">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="249" Header="Education">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox x:Name="txtEducation"
                                        Width="247"
                                        Text="{Binding education}" />
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Width="253" Header="College/Institution">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox x:Name="txtCollege"
                                        Width="251"
                                        Text="{Binding college}" />
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Width="88" Header="Mark(%)">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBox x:Name="txtMark"
                                        Width="86"
                                        Text="{Binding mark}" />
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn Width="88" Header="Add">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Button x:Name="btnAddQualification"
                                    Click="btnAddQualification_Click"
                                    Content="Add"
                                    Style="{StaticResource NewImg}" />
                        </StackPanel>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

<Button Content="Submit" x:name="submit" />

2 个答案:

答案 0 :(得分:1)

您已在单元格模板中的任何位置使用{Binding ...},默认情况下这些绑定是TwoWay,因此任何用户输入都将/应自动传递给基础数据对象。但是,我没有在ListView.ItemsSource属性上看到任何绑定,因此很可能您忘记准备数据对象。创建一个dataitems集合,将它们绑定到ItemsSource,让ListView显示它们,并使用绑定的celltemplate更新数据项的属性,而不需要额外的工作。按下submit时,只需检查数据项集合,输入的所有数据都应该已存在(假设您已正确制作所有模型和绑定)。

答案 1 :(得分:1)

这可能是您的代码更改工作正常的示例:

<ListView x:Name="myListView" 
                  HorizontalAlignment="Stretch" 
                  ItemsSource="{Binding Source={StaticResource myCollectionViewSource},XPath='Party',Mode=TwoWay}">

            <ListView.View>
                <GridView>
                    <GridViewColumn Width="100" DisplayMemberBinding="{Binding XPath='Contact'}" Header="Contact"/>
                    <GridViewColumn DisplayMemberBinding="{Binding XPath='Qty'}" Header="Q"/>
                    <GridViewColumn DisplayMemberBinding="{Binding XPath='Amount'}" Header="Amt"/>
                    <GridViewColumn x:Name="tbTot" Header="Tot">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <DockPanel>
                                    <TextBox LostFocus="TextBox_LostFocus" Width="100" Text="{Binding XPath='Text'}" />
                                </DockPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>    
        </ListView>