【发布时间】:2013-08-03 12:28:00
【问题描述】:
我正在创建我的第一个 wpf 应用程序。此时我需要一个在复选框的值发生更改后触发的事件,因此选中和未选中不在图片中:-(
我有一个数据网格,绑定到一个可观察的集合。在这个数据网格中,我有一列带有复选框(绑定到 observ.col. 中的一个属性)。 表单上的文本框显示“总值”,即所有选中项的值的总和。因此,当检查/未选中时,我需要重新计算总值。为此,我遍历了 observ 的项目。上校但是,当我附加“选中”和“未选中”事件时。首先计算总值。然后检查值被更改。
有没有办法改变检查值,然后触发事件?
谢谢,
一月
<DataGrid AutoGenerateColumns="False" Height="305" Margin="105,137,0,0" Name="GrdReceivings" VerticalAlignment="Top" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" ItemsSource="{Binding}" HorizontalAlignment="Left" Width="850" SelectionMode="Single" CanUserAddRows="False" CanUserDeleteRows="False" SelectedCellsChanged="GrdReceivings_SelectedCellsChanged" MouseDoubleClick="GrdReceivings_MouseDoubleClick" IsEnabled="True">
<DataGrid.Columns>
<DataGridCheckBoxColumn MinWidth="40" Binding="{Binding Path=Selected}" >
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.Checked" Handler="OnCheck"/>
<EventSetter Event="CheckBox.Unchecked" Handler="OnUncheck"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
...
【问题讨论】:
-
有什么问题?
-
所以当一个复选框被选中/取消选中时,我需要重新计算总值。为此,我遍历了 observ 的项目。上校但是,当我附加“选中”和“未选中”事件时。首先计算总值。然后更改检查值。这意味着显示的值永远不会正确。我需要它是正确的。
-
那么你可以做相反的事情......如果它被检查出来,如果没有检查应该发生什么......因为你没有检查它但它返回检查......你可以尝试点击事件也
-
不可能。假设我有 5 个项目。我选中(或取消选中)其中一个。这意味着通常我将有 4 个项目的值得到正确求和,1 个项目的总和不正确。如果我扭转这个过程,我将有 4 项错误地求和,1 项正确地求和。我需要正确总结 5 项。似乎我也不知道哪个复选框被选中/取消选中,因为它们在数据网格中。
-
您是否检查过点击事件发生了什么,它返回了什么值或点击后类似的事件
标签: c# wpf events checkbox observablecollection