1
我有一個列表框,我在其中添加了兩個控件,即一個複選框和一個datagrid並排作爲listboxitem。我在下面的方式做到了:如何獲取在datagrid中選中的所有列標題複選框,當我點擊不屬於wpf中datagrid一部分的複選框時?
在後面的代碼:
listBox1.items.Add(DT)
這裏DT是表名。
在XAML:
<ListBox Grid.Row="0" AlternationCount="2" MinHeight="305" HorizontalAlignment="Stretch" Name="listBox1" VerticalAlignment="Stretch" MinWidth="537" >
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="stkPanel" MinHeight="80" MinWidth="500" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<DataGrid Grid.Column="1"
AutoGenerateColumns="True"
MinHeight="75"
HorizontalAlignment="Center"
Name="dataGrid1"
VerticalAlignment="Stretch"
MinWidth="470"
MaxWidth="900"
ItemsSource="{Binding}"
IsReadOnly="True" Background="#E6BAB7B7">
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<CheckBox Name="colCheckBox" Content="{Binding}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.ColumnHeaderStyle>
</DataGrid>
<CheckBox Grid.Column="0" Height="35" Width="25" Name="IsDone" HorizontalAlignment="Right" VerticalAlignment="Center" Checked="IsDone_Checked" />
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
現在,當我檢查「IsDone」複選框即一個ListBoxItem的一部分,所有的存在於一個數據網格的列標題的複選框(也是列表框項)應該檢查該特定列表框項目行。如果任何數據網格列標題中的任何複選框未選中,則「Isdone」複選框也應同時取消選中。請給我建議如何操作?
在此先感謝
嗨Sankarann, 謝謝您的回答。但是有一個小問題。當我點擊「IsDone」複選框時,列標題中的所有複選框都會被選中。這可以正常工作。但是,如果任何存在於datagrid列標題中的複選框未選中,則所有複選框都將被取消選中。我需要的只是取消選中那個特殊的列標題複選框,我想不選中「IsDone」複選框。 – user3269629
設置'BindingMode = OneWay' ..這不會更新源和其他人..檢查更新的答案.. – Sankarann