【发布时间】:2021-10-22 07:47:11
【问题描述】:
当我通过DataContext修改值为CheckBox设置数据时,为什么向下滚动或向上滚动时返回原始值?有什么办法可以恢复吗?
当我向下或向上滚动时,我希望它不会将复选框恢复为原始值。
XAML 代码
<DataGrid x:Name="list_account_instagram"
Background="#DDDDDD"
CanUserResizeColumns="False"
CanUserSortColumns="False"
CanUserAddRows="False">
<DataGrid.Columns>
<materialDesign:DataGridTextColumn Width="0.4*"
Binding="{Binding STT}"
Header="#" />
<DataGridCheckBoxColumn Width="0.35*" Binding="{Binding CHECK, Mode=OneTime}">
<DataGridCheckBoxColumn.Header>
<Border Background="Transparent">
<CheckBox Name="checkallins" Click="Checkallins_Click"/>
</Border>
</DataGridCheckBoxColumn.Header>
</DataGridCheckBoxColumn>
<materialDesign:DataGridTextColumn Binding="{Binding UID}" Width="*"
Header="UID" />
<materialDesign:DataGridTextColumn Binding="{Binding PASSWORD}" Width="*"
Header="Password"/>
<materialDesign:DataGridTextColumn Binding="{Binding COOKIE}" Width="*"
Header="Cookie"/>
<materialDesign:DataGridTextColumn Binding="{Binding TEN}" Width="*"
Header="Tên"/>
<materialDesign:DataGridTextColumn Binding="{Binding AVATAR}" Width="*"
Header="Avatar"/>
<materialDesign:DataGridTextColumn Binding="{Binding TT}" Width="*"
Header="Tình Trạng"/>
<materialDesign:DataGridTextColumn Binding="{Binding MESSAGE}" Width="*"
Header="Trạng Thái"/>
</DataGrid.Columns>
</DataGrid>
C#
private void Checkallins_Click(object sender, RoutedEventArgs e)
{
if (checkallins.IsChecked.Value)
{
if (list_account_instagram.Items.Count > 0)
{
for (int i = 0; i < list_account_instagram.Items.Count; i++)
{
GetCell(list_account_instagram, i, 1).DataContext = new { CHECK = true };
}
}
}
else
{
if (list_account_instagram.Items.Count > 0)
{
for (int i = 0; i < list_account_instagram.Items.Count; i++)
{
GetCell(list_account_instagram, i, 1).DataContext = null;
GetCell(list_account_instagram, i, 1).DataContext = new { CHECK = false };
}
}
}
}
为了更好地描述有问题的行为,有视频:https://files.fm/u/2xxgqrqra#/view/p4jw246e3
【问题讨论】:
-
您是否正在处理向上/向下滚动?您是否对数据进行了一些更改?
-
@Tatranskymedved 我没有处理向上和向下滚动的功能