Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.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# 如何将复选框绑定到datagrid wpf中项目列表中的类对象_C#_.net_Wpf_Xaml - Fatal编程技术网

C# 如何将复选框绑定到datagrid wpf中项目列表中的类对象

C# 如何将复选框绑定到datagrid wpf中项目列表中的类对象,c#,.net,wpf,xaml,C#,.net,Wpf,Xaml,我有一个datagrid,它绑定到包含itemsource的项目列表。复选框控件是网格上的一列,选中时,单击按钮时将存储特定信息。我的问题是我无法让对象复选框绑定到XAML复选框,当我选中复选框时,它会给我一个空值或false XAML用于复选框: <DataGridTemplateColumn Header="Ist aktiv"> <DataGridTemplateColumn.CellTemplate> <

我有一个datagrid,它绑定到包含itemsource的项目列表。复选框控件是网格上的一列,选中时,单击按钮时将存储特定信息。我的问题是我无法让对象
复选框
绑定到XAML复选框,当我选中
复选框
时,它会给我一个空值或false

XAML用于复选框:

<DataGridTemplateColumn Header="Ist aktiv">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Path= checkBox }" Name="checkBox" IsEnabled="{Binding Enabled}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn

>

按钮事件:

private void checkinCheckBox() {


                List<AwaitingMeds> awaitingMedslist = MedicationDatagrid.ItemsSource as List<AwaitingMeds>;
                //List<AwaitingMeds> awaitingMedslistSelected = new List<AwaitingMeds>();


                List<AwaitingMeds> awaitingMedslistSelected = ( from m in awaitingMedslist
                                                                where m.checkBox.Equals( true )
                                                                select m ).ToList<AwaitingMeds>();


                foreach( AwaitingMeds checkedItems in awaitingMedslistSelected )
                  {

                      MedicationDispenseData.UpdateMedicationDispense( checkedItems.MedicationDispenseID, ( int )Enumerations.MedicationDispenseStatus.CheckedIn,false, "" );
                      MedicationDispenseHistory medicationDispenseHistory = new MedicationDispenseHistory();
                      medicationDispenseHistory.MedicationDispenseID = checkedItems.MedicationDispenseID;
                      medicationDispenseHistory.StaffID = GlobalVariables.loggedInStaff.StaffID;
                      medicationDispenseHistory.MedicationDispenseStatusID = ( int )Enumerations.MedicationDispenseStatus.CheckedIn;
                      MedicationDispenseHistoryData.Create( medicationDispenseHistory );

                  }

            }

            public IEnumerable<DataGridRow> GetDataGridRows(DataGrid grid )
            {
                var itemsSource = grid.ItemsSource as System.Collections.IEnumerable;
                if( null == itemsSource ) yield return null;
                foreach( var item in itemsSource )
                {
                    var row = grid.ItemContainerGenerator.ContainerFromItem( item ) as DataGridRow;
                    if( null != row ) yield return row;
                }
            }
private void checkinCheckBox(){
List WaitingMedsList=MedicalationDataGrid.ItemsSource as List;
//List WaitingMedsListSelected=新建列表();
列表WaitingMedsList Selected=(来自WaitingMedsList中的m
其中m.checkBox.Equals(true)
选择m.ToList();
foreach(正在等待的药物选中正在等待的药物中的checkedItems)
{
MedicationDispenceData.UpdateMedicationDispense(checkedItems.MedicationDispenceId,(int)枚举数.MedicationDispenceStatus.CheckedIn,false,“”;
MedicinationDispenceHistory MedicinationDispenceHistory=新的MedicinationDispenceHistory();
medicationDispenseHistory.MedicationDispenseID=checkedItems.MedicationDispenseID;
MedicinationDisputeHistory.StaffID=GlobalVariables.loggedInStaff.StaffID;
MedicationDispenceHistory.MedicationDispenceStatusId=(int)枚举数。MedicationDispenceStatus.CheckedIn;
MedicationDispenseHistoryData.Create(medicationDispenseHistory);
}
}
公共IEnumerable GetDataGridRows(DataGrid网格)
{
var itemsSource=grid.itemsSource as System.Collections.IEnumerable;
如果(null==itemsSource)产生返回null;
foreach(itemsSource中的var项)
{
var row=grid.ItemContainerGenerator.ContainerFromItem(item)作为DataGridRow;
如果(空!=行)产生返回行;
}
}

您的复选框绑定到Enabled,因此您应该检查m.Enabled而不是m.Checkbox

                List<AwaitingMeds> awaitingMedslistSelected = ( from m in awaitingMedslist
                                                            where m.**Enabled**.Equals( true )
                                                            select m ).ToList<AwaitingMeds>();
List waitingmedslist selected=(来自waitingmedslist中的m)
其中m.*Enabled**.Equals(true)
选择m.ToList();

我也有同样的问题

您不能按名称访问
数据模板中的控件。
想象一下,如果您的
DataGrid
有1000行,将会发生什么! 将有1000个“
复选框”
“es

因此,请尝试:

<CheckBox IsChecked="{Binding PropertyName,RelativeSource={RelativeSource Self}}" />


注意:你的名字很容易引起误解,所以我可能误解了你真正喜欢做什么。如果是,请留下评论并编辑问题

你为什么要发布checkinCheckBox的代码?发布绑定DataGrid的XAML。您是否跟踪了“设置为”复选框?这是布尔属性的奇数名称。