繁体   English   中英

值更改后触发的复选框事件

[英]Checkbox event that fires AFTER the value has changed

我正在创建我的第一个wpf应用程序。 这时我需要一个事件,当复选框的值发生更改后将触发该事件,因此选中和未选中的对象不在画面内:-(

我有一个数据网格,绑定到一个可观察的集合。 在此datagrid中,我有一列带有复选框(绑定到observ。col。中的属性)。 表单上的文本框显示“总值”,即所有选中项的值之和。 因此,当选中/取消选中复选框时,我需要重新计算总值。 为此,我遍历了观察项。 上校 但是,当我附加事件“选中”和“未选中”时。 首先计算总价值。 然后更改检查值。

有没有办法更改检查值,然后触发一个事件?

谢谢,

一月

<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>
...

您在WPF方面的做法是错误的。 与其查看UI控件,不如查看数据。 您说过要将Checkbox控件绑定到ObservableCollection的属性...我猜您是在说ObservableCollection 内部的对象的属性,而不是集合本身。

因此,在更改与Checkbox控件绑定的属性后,请在视图模型或后面的代码中更新总值。 这样,它将每次具有更新的值。

您必须设置UpdateSourceTrigger=PropertyChanged才能立即更新绑定:

<DataGridCheckBoxColumn 
    Binding="{Binding Path=Selected, UpdateSourceTrigger=PropertyChanged}"/>

感谢Sheridan&Clemens,它成功了。 要制定好的答案:

<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, UpdateSourceTrigger=PropertyChanged}" />

然后,在可观察的集合中的setter上计算值。

解决了!!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM