1

初めての wpf アプリケーションを作成しています。現時点では、チェックボックスの値が変更された後に発生するイベントが必要なので、チェックされているものとチェックされていないものは関係ありません:-(

監視可能なコレクションにバインドされたデータグリッドがあります。このデータグリッドには、チェックボックス付きの列があります(観察列のプロパティにバインドされています)。フォームのテキストボックスには、チェックされたすべてのアイテムの値の合計である「合計値」が表示されます。したがって、チェックボックスがオン/オフになっている場合、合計値を再計算する必要があります。これを行うには、observ の項目をループします。列。ただし、「チェック済み」と「未チェック」のイベントを添付すると。合計値が最初に計算されます。次に、チェック値が変更されます。

チェック値を変更してからイベントを発生させる方法はありますか?

どうも、

1月

<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

0

これは、WPF に対して間違った方法で行っています。UI コントロールを見る代わりに、データを見てください。あなたはCheckboxコントロールを のプロパティにバインドしていると言いましたObservableCollection...コレクション自体ではなく、のオブジェクトのプロパティを意味していたと思います。ObservableCollection

そのため、ビュー モデルまたはコード ビハインドで、Checkboxコントロールにバインドされているプロパティが変更されたときに合計値を更新します。このようにして、毎回更新された値が得られます。

于 2013-08-02T10:03:31.747 に答える
-1

シェリダンとクレメンスに感謝します。うまくいきました。適切な答えを作成するには:

<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}" />

次に、監視可能なコレクションで、セッターで値を計算します。

于 2013-08-05T07:00:32.443 に答える