【发布时间】:2019-01-03 17:54:13
【问题描述】:
我有一个奇怪的问题,即通过按下按钮更改数据网格列的可见性,它会触发与该数据网格列中的复选框相关联的“已检查”事件。
这是我的设置:
我有一个标签
lblUpdateMode,其文本为“单行”或“每一行”;一个有 10 列的数据网格,最初 5 列是可见的,5 列是隐藏的;
按下按钮
btnChangeView会翻转每一列的可见性;在其中一个数据网格列中,我有一个 CheckBoxColumn,带有 Checked/Unchecked 事件。如果标签
text = "every row"按下单个复选框会更新每一行。
但是,如果 label = "every row" 和我按下 btnChangeView,它还会触发 Checked 事件并更新每一行中的复选框。
为什么会发生这种情况,我该如何避免?
这是 Checked 事件的代码 - 没什么花哨或奇怪的:
private void UpdateDataGridCheckBox(string colname, bool v)
{
if (lblUpdateMode.Content.ToString() == "Every Row")
{
foreach (DataRow dr in DataAccess.Instance.sourceFiles.Rows)
{
dr[colname] = v;
}
}
}
这是本专栏的 XAML:
<DataGrid x:Name="dataGridFiles" Grid.Row="2" Margin="10" Visibility="Collapsed"
ItemsSource="{Binding Path=DataAccess.Instance.sourceFiles, Mode=TwoWay}">
<DataGrid.Columns>
<!--Import-->
<DataGridTemplateColumn Header="Import" Width="60" CanUserReorder="True" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="checkBoxImport" HorizontalAlignment="Center" VerticalAlignment="Center"
IsChecked="{Binding Path=Import, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Checked="checkBoxImport_Checked"
Unchecked="checkBoxImport_Unchecked"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
谢谢
【问题讨论】:
-
请发布您的 xaml。以及背后的 btnChangeView 代码
-
XAML中的复选框触发器关联可能存在问题。是的,请张贴XAML和后面的按钮代码。 -
我为复选框之一添加了 XAML。按钮后面的代码非常简单:grid.Columns[0].Visibility = Visibility.Visible; grid.Columns[1].Visibility = Visibility.Collapsed; grid.Columns[2].Visibility = Visibility.Collapsed; grid.Columns[3].Visibility = Visibility.Visible;
-
@Sach,您可以帮我解决这个问题吗?谢谢。
-
后面代码中的
Import属性是什么?你在哪里更改代码中的值?