Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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 DataGrid-遍历行并访问模板列中的控件_C#_Wpf_Xaml_Datagrid - Fatal编程技术网

C# WPF DataGrid-遍历行并访问模板列中的控件

C# WPF DataGrid-遍历行并访问模板列中的控件,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我来自ASP.NET的背景,我一直负责维护一个WPF项目,所以这是一个相当好的学习过程 我有一个带有以下XAML的DataGrid <DataGrid Name="StockGV" AutoGenerateColumns="False" IsReadOnly="True"> <DataGrid.Columns> <DataGridTemplateColumn Header="Scanned" IsReadOnly="true"

我来自ASP.NET的背景,我一直负责维护一个WPF项目,所以这是一个相当好的学习过程

我有一个带有以下XAML的DataGrid

<DataGrid Name="StockGV" AutoGenerateColumns="False" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Scanned" IsReadOnly="true">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Name="StatusImage" Source="tick.png"></Image>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding PalletScanned}" Value="False">
                                <Setter TargetName="StatusImage" Property="Source" Value="cross.png"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTextColumn Header="Pallet Number" IsReadOnly="True" Binding="{Binding PalletNumber}">
            </DataGridTextColumn>
            <DataGridTextColumn Header="Quantity" IsReadOnly="True" Binding="{Binding Quantity}">
            </DataGridTextColumn>
            <DataGridTemplateColumn IsReadOnly="true">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <xctk:IntegerUpDown HorizontalAlignment="Left" Name="integerUpDown1" Maximum="{Binding Quantity}" Minimum="0" VerticalAlignment="Top" Value="{Binding Quantity, Mode=OneWay}" />
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding PalletScanned}" Value="False">
                                <Setter TargetName="integerUpDown1" Property="IsEnabled" Value="False"/>
                            </DataTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

在WPF中我将如何执行此操作?注意:如果有帮助,DataGrid将绑定到一个匿名类型,该类型与它的本意不同:)

通常应将
数据网格
绑定到类型为T的
项源
。在列中,应绑定到类型为T的属性

IntegerUpDown
控件上的每个更改都会在基础集合中表示

要在以后的
视图模型中访问此值
,只需使用Linq查询
集合
,即可获得值

您已经控制了以下代码:

Value="{Binding Quantity, Mode=OneWay}"
因此,您可以访问Quantity属性以获取所需的值

记住:
如果用户应该能够更改数量
属性
绑定
必须是
模式=双向
,并且该属性也需要有一个公共设置器。

哇,这与它的本意不同:)

通常应将
数据网格
绑定到类型为T的
项源
。在列中,应绑定到类型为T的属性

IntegerUpDown
控件上的每个更改都会在基础集合中表示

要在以后的
视图模型中访问此值
,只需使用Linq查询
集合
,即可获得值

您已经控制了以下代码:

Value="{Binding Quantity, Mode=OneWay}"
因此,您可以访问Quantity属性以获取所需的值

记住:
如果用户应该能够更改Quantity
属性
绑定
必须是
模式=双向
,并且该属性也需要一个公共设置器。

不要忘记INotifyPropertyChanged。是的,谢谢。我完全忘记提了!:)别忘了InotifyProperty的改变。是的,谢谢你。我完全忘记提了!:)