我遇到的問題與DataGrid(WPF)中的複選框有關。爲了更好地理解問題,我附上了截圖。Datagrid列標題應根據是否選中某個DataGridView列的所有CheckBox來檢查/取消選中CheckBox的狀態
問題:即使其中一個子項未選中,也會檢查DataHeader列複選框。我期望解決方案能夠解決這個問題,以便當用戶明確地取消選中某個子項時,應該隱式地取消選中ALL(列標題)。
請幫助傢伙...謝謝 Plz檢查鏈接。我希望解決方案能夠像這樣工作。 http://www.codeproject.com/Articles/42437/Toggling-the-States-of-all-CheckBoxes-Inside-a-Dat#
<dg:DataGrid.Columns>
<dg:DataGridCheckBoxColumn Binding="{Binding Check}" IsThreeState="True" Width="50">
<dg:DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate x:Name="dtAllChkBx">
<CheckBox Name="cbxAll" Content="{x:Static properties:Resources.lblAll}"
Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />
</DataTemplate>
</dg:DataGridCheckBoxColumn.HeaderTemplate>
</dg:DataGridCheckBoxColumn>
。
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
unchck_all_prd();
dgEnggAcc.Items.Refresh();
}
private void unchck_all_prd()
{
for (int i = 0; i < engg_list.Count; i++)
{
engg_list[i].Check = false;
}
}
private void chck_all_prd()
{
for (int i = 0; i < engg_list.Count; i++)
{
engg_list[i].Check = true;
}
}
public class EnggLst : ObservableCollection<EnggLst>
{
public bool Check { get; set; }
}
請把你的XAML代碼 – ABH 2012-04-18 11:04:03
在我看來,你不該」如果有一個未選中的行,則不要選中該標題。在我看來,如果所有的都沒有被選中,那就意味着所有的行都沒有被選中。你應該使用一個三態複選框,並使用第三個「我不知道」狀態來表示一個混合。 Windows以這種方式工作(可以考慮在資源管理器中選擇多個文件,其中一些文件是隻讀的,其中一些文件是不可讀的,如果您查看這些文件的屬性,只讀複選框將處於第三種狀態) – 2012-04-18 11:15:11