簡體   English   中英

如何獲得 <checkbox> 內部狀態 <datagridtemplatecolumn> 在datagrid中任何行的復選框事件上

[英]How to get <checkbox> state inside <datagridtemplatecolumn> on any row's checkbox event in datagrid

我的WPF應用程序中有一個數據網格-dgUserSession。 它包含3列,其中只有2個文本列與數據庫綁定,第一個是手動創建的復選框。

<DataGridTemplateColumn>
                                    <DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="False" Name="userSelection" Checked="DataGridCheckBox_Checked" Unchecked="DataGridCheckBox_Unchecked"/>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.CellTemplate>
                                    <DataGridTemplateColumn.HeaderTemplate>
                                        <DataTemplate>
                                            <CheckBox Checked="chkHeader_Checked" Unchecked="chkHeader_Unchecked" Name="headerSelection">
                                            </CheckBox>
                                        </DataTemplate>
                                    </DataGridTemplateColumn.HeaderTemplate>
                                </DataGridTemplateColumn>

我想遍歷所有四個事件中的每一行狀態

private void chkHeader_Checked(object sender, RoutedEventArgs e)
    { 
        for (int i = 0; i < dgUserSession.Items.Count; i++)
        {
}
}

但是在此迭代過程中是否選中了如何獲取復選框? 我在護目鏡上呆了3個小時,但沒有結果。

提前致謝。

在WPF中, 始終最好以UI所需的形式創建數據類型類。 通過這種方式,我的意思是應該將數據綁定到所有三個列,而不是將數據綁定到DataGrid中的三個列中的兩個。 如果將bool屬性添加到DataGrid每行中顯示的類中,則可以從該類訪問Checkbox的值。

如果您沒有將自定義類型的集合數據綁定到DataGrid.ItemsSource ,那么我建議您這樣做。 只需創建一個類(實現INotifyPropertyChanged接口)並為每個列(在您的情況下為3)具有一個屬性即可。 然后,數據將該類型的ObservableCollection綁定到您的DataGrid.ItemsSource屬性:

public ObservableCollection<YourDataType> Items { get; set; }

...

然后,在YourDataType類的屬性設置器中,每次更改任何值時,您都可以訪問每個屬性/列的值:

public someType SomeProperty
{
    get { return someProperty; }
    set 
    {
        someProperty = value;
        NotifyPropertyChanged("SomeProperty");
        // each time this is changed, you have access to the other property values here
    }
}

您還可以遍歷集合以查找Checkbox的值:

foreach (YourDataType item in Items)
{
    bool checkBoxValue = item.NewBoolProperty;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM