Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF MVVM中GridView内的文本框_C#_Asp.net_Wpf_Gridview_Mvvm - Fatal编程技术网

C# WPF MVVM中GridView内的文本框

C# WPF MVVM中GridView内的文本框,c#,asp.net,wpf,gridview,mvvm,C#,Asp.net,Wpf,Gridview,Mvvm,如何将WPF网格视图中的文本框绑定到视图模型中的属性?我使用的是MVVM模式 <ListView Canvas.Left="135" Canvas.Top="185" Height="204" Name="listView1" ItemsSource="{Binding Path=lstSelectedStocks}" Width="436" > <ListView.View> <

如何将WPF网格视图中的文本框绑定到视图模型中的属性?我使用的是MVVM模式

<ListView Canvas.Left="135" Canvas.Top="185" Height="204" Name="listView1" ItemsSource="{Binding Path=lstSelectedStocks}" Width="436" >
                    <ListView.View>
                        <GridView>

                            <GridViewColumn Header="SI No." DisplayMemberBinding="{Binding Path=Index}"  Width="80"></GridViewColumn>
                            <GridViewColumn Header="Item ID" DisplayMemberBinding="{Binding Path=Itemname.ItemId}" Width="80"></GridViewColumn>
                            <GridViewColumn Header="Item Name" DisplayMemberBinding="{Binding Path=Itemname.Name}" Width="120"></GridViewColumn>
                            <GridViewColumn Header="Quantity" Width="100">
                                <GridViewColumn.CellTemplate >
                                    <DataTemplate>
                                        <TextBox x:Name="txtQuantity" Width="100"  Text="{Binding Path=Qantity, UpdateSourceTrigger=PropertyChanged}" />
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Header="Purchase Rate" Width="0" DisplayMemberBinding="{Binding Path=PurchasePrice}" ></GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>

任何人都可以帮忙。

您分配给文本属性的绑定路径很好。唯一需要检查Quantity属性的是您作为集合分配给gridview itemssource的类的一部分。

我不知道我是否正确理解您的意思(如果没有,请更正),但根据您的评论,我猜您希望向特定项添加数量

如果是这种情况,则item类仍需要一个quantity属性/字段来包含此值,但如果不需要直接设置该数量,则可能需要使用标签之类的内容来显示该属性

您应该将此属性添加到xaml中的列表框中:

SelectedItem="{Binding Path=SelectedItem}"
在viewmodel中,您需要添加与列表中的项目类型相同的名为“SelectedItem”的属性

因此,让我们假设在viewmodel中您有:

public List<Product> lstSelectedStocks
{
    // ...
}
现在,在列表框之外添加一个新的文本框:

您的viewmodel中已经有“Qantity”属性,因此这里没有更多工作

在文本框旁边添加一个新按钮

<Button Content="Add Quantity" Command="{Binding Path=AddQuantity}" />

您需要在viewmodel中实现“AddQuantity”命令

要向特定项目添加数量,需要执行以下步骤:

  • 通过单击列表框中的某一行来选择该项-这将在viewmodel中设置“SelectedItem”属性
  • 在文本框中输入金额-这将在viewmodel中设置“数量”属性
  • 按“添加数量”按钮-这将调用视图模型中的“添加数量”命令,该命令应获取“Qantity”属性中的值,并将该值添加到SelectedItem.Quantity
  • [根据下面的评论进行编辑]

    您可以在GridView的每一行上都有文本框和“AddQuantity”按钮

    首先,需要将此“Quantity”属性移动到实现每个项的类。我可能会将其重命名为“QuantityToAdd”或类似的名称,以避免与item类中已经存在的数量混淆。
    您还需要将“AddQuantity”命令移到内部。通过这种方式,您将始终在该特定项的“Qantity”(或“QuantityToAdd”(如果您重命名它的话)中添加值,并且可能不需要在ListView中使用
    SelectedItem=“{Binding Path=SelectedItem}”


    可能有一个更优雅的解决方案,但这正是我现在想到的。

    请查看用户3206784的答案。“Qantity”酒店位于何处?它是在类make
    lstSelectedStocks
    列表中,还是在包含ListView的控件的viewmodel中?它应该在类中,而不是在viewmodel中。此“Qantity”属性不在
    lsSelectedStocks
    列表中。数量是一个新属性。我想添加一个特定项目的数量。例如,如何在网格中获取文本框的值,而它不在ItemSource中。我想编辑文本框并输入10之类的值。因此,将值ie,10添加到新表中。谢谢,先生,对于设置为网格视图内部的文本框,有什么解决方案吗。?文本框完全在里面。
    public Product SelectedItem
    {
        // ...
    }
    
    <Button Content="Add Quantity" Command="{Binding Path=AddQuantity}" />