0

我有一个绑定到包含 itemsource 的项目列表的数据网格。复选框控件是网格上的一列,选中后将在单击按钮时存储特定信息。我的问题是我无法让对象checkBox绑定到 XAML 复选框,当我检查checkbox它时,它给了我一个空值或 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;
                }
            }
4

2 回答 2

0

我有同样的问题。

您无法DataTemplate按名称访问控件。想象一下如果你DataGrid有 1000 行会发生什么!会有1000个" checkbox"es!!!!!!

所以试试:

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

注意:您的命名非常具有误导性,因此我可能会误解您真正喜欢做什么。如果是这样,请发表评论并编辑问题!

于 2013-08-10T03:18:29.963 回答
0

你的 Checkbox 绑定到 Enabled 所以你应该检查 m.Enabled 而不是 m.checkbox

                List<AwaitingMeds> awaitingMedslistSelected = ( from m in awaitingMedslist
                                                            where m.**Enabled**.Equals( true )
                                                            select m ).ToList<AwaitingMeds>();
于 2013-08-09T18:02:41.117 回答