#c# #wpf #datagrid
#c# #wpf #datagrid
Вопрос:
Я использую .Net 3.5 с WPF и XAML. У меня есть datagrid с первым столбцом, являющимся DataGridCheckBoxColumn. Это внутри всплывающего окна. В конструкторе иногда я хочу инициализировать все строки, которые должны быть выбраны, а в других случаях строки не должны быть выбраны.
Используя привязку данных, я могу инициализировать флажок в строке, чтобы он был либо установлен, либо не установлен.
Но я не могу установить флажок заголовка вместе со всеми проверками строк в случае, когда все строки должны быть проверены. Как я могу добраться до флажка?
<toolkit:DataGridCheckBoxColumn CellStyle="{StaticResource SingleClickEditing}" Visibility="{Binding exists}" Binding="{Binding Path=toTransfer, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="False">
<toolkit:DataGridCheckBoxColumn.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox Checked="CheckBox_Checked" Unchecked="CheckBox_Checked"/>
</StackPanel>
</DataTemplate>
</toolkit:DataGridCheckBoxColumn.HeaderTemplate>
</toolkit:DataGridCheckBoxColumn>
Я делаю что-то вроде:
public MyPopupWindow()
{
InitializeComponent();
if(checkMode.Equals("all"))
{
// Check all the items
foreach (var item in bindList)
{
item.toTransfer = true;
}
// How to check the header checkbox?
}
Ответ №1:
Я не уверен, что это лучший способ сделать это, но вы можете сделать
<CheckBox Checked="CheckBox_Checked" Unchecked="CheckBox_Checked" Loaded="CheckBox_Loaded"/>
и
void CheckBox_Loaded(object sender, RoutedEventArgs e)
{
CheckBox checkBox = sender as CheckBox;
if(checkMode.Equals("all"))
{
checkBox.IsChecked = true;
}
}