1

我正在创建我的第一个 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>
...
4

3 回答 3

1

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

<DataGridCheckBoxColumn 
    Binding="{Binding Path=Selected, UpdateSourceTrigger=PropertyChanged}"/>
于 2013-08-03T10:32:10.987 回答
0

对于 WPF,您这样做是错误的。与其查看 UI 控件,不如查看数据。您说您将Checkbox控件绑定到...的属性...ObservableCollection我猜您的意思是该对象的属性而不是集合本身。ObservableCollection

Checkbox因此,在您的视图模型或后面的代码中,当绑定到控件的属性发生更改时,更新您的总值。这样,它每次都会有更新的值。

于 2013-08-02T10:03:31.747 回答
-1

感谢 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 上,计算值。

于 2013-08-05T07:00:32.443 回答