簡體   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